Par exemple, le site Web dispose d'un contrôle utilisateur Header.ascx. Chaque page appelle ce contrôle comme « en-tête de page ». Ce contrôle utilisateur peut être mis en cache directement pour soumettre les performances. Cependant, ce contrôle utilisateur Header.ascx doit désormais afficher la connexion. nom de l'utilisateur. Vous ne pouvez donc pas utiliser directement la méthode de mise en cache suivante :
<% @ OutputCache Duration = " 86400 " VaryByParam = " None " %>.
À l'heure actuelle, vous pouvez utiliser la méthode de « mise en cache des pages basée sur des chaînes personnalisées », comme suit :
<%@ OutputCache Duration="86400" VaryByParam="None" VaryByCustom="HeaderPageKey" %>
Remplacez ensuite la méthode GetVaryByCustomString dans la
chaîne de remplacement publique de la classe globale GetVaryByCustomString (contexte HttpContext, chaîne personnalisée)
{
si(custom=="HeaderPageKey")
{
//Cache Header.ascx contrôle
si (contexte.Request.IsAuthenticated)
{
retourner contexte.User.Identity.Name;
}
autre
{
renvoie "NoAuthenticated_User" ;
}
}
return base.GetVaryByCustomString (contexte, personnalisé);
}
Si l'utilisateur n'est pas connecté, une version sera mise en cache. Si l'utilisateur est déjà connecté, une autre version sera mise en cache en fonction du nom de connexion Haha, une version est mise en cache pour chaque utilisateur. solution.
Pour la technologie de mise en cache ci-dessus, veuillez vous référer à http://msdn.microsoft.com/library/chs/default.asp?url=/library/CHS/cpguide/html/cpconcachingversionsofpagebasedonparameters.asp
De plus, cette méthode de mise en cache est également utilisée dans MSPetShop3.0, différentes versions sont mises en cache en fonction de Request.Querystring et du fait que vous soyez connecté. Cependant, ce cache ne semble pas être activé par défaut.
Source : kaka.net