Beispielsweise verfügt die Website über ein Header.ascx-Benutzersteuerelement. Jede Seite ruft dieses Steuerelement als „Seitenkopf“ auf. Dieses Benutzersteuerelement kann jetzt jedoch zur Anzeige der Anmeldung verwendet werden Benutzername. Daher können Sie die folgende Caching-Methode nicht direkt verwenden:
<% @ OutputCache Duration = " 86400 " VaryByParam = " None " %>
Zu diesem Zeitpunkt können Sie die Methode „Seiten basierend auf benutzerdefinierten Zeichenfolgen zwischenspeichern“ wie folgt verwenden:
<%@ OutputCache Duration="86400" VaryByParam="None" VaryByCustom="HeaderPageKey" %>
Überschreiben Sie dann die Methode GetVaryByCustomString in der
öffentlichen Überschreibungszeichenfolge der globalen Klasse GetVaryByCustomString(HttpContext context, string custom)
{
if(custom=="HeaderPageKey")
{
//Cache Header.ascx-Steuerung
if(context.Request.IsAuthenticated)
{
return context.User.Identity.Name;
}
anders
{
return „NoAuthenticated_User“;
}
}
return base.GetVaryByCustomString (Kontext, benutzerdefiniert);
}
Wenn der Benutzer nicht angemeldet ist, wird eine Version zwischengespeichert. Wenn der Benutzer bereits angemeldet ist, wird eine andere Version basierend auf dem Anmeldenamen zwischengespeichert. Das ist nicht gut Lösung.
Informationen zur oben genannten Caching-Technologie finden Sie unter http://msdn.microsoft.com/library/chs/default.asp?url=/library/CHS/cpguide/html/cpconcachingversionsofpagebasedonparameters.asp .
Darüber hinaus wird auch diese Caching-Methode verwendet In MSPetShop3.0 werden verschiedene Versionen basierend auf Request.Querystring und Ihrer Anmeldung zwischengespeichert. Dieser Cache scheint jedoch nicht standardmäßig aktiviert zu sein.
Quelle: kaka.net