Por ejemplo, el sitio web tiene un control de usuario Header.ascx. Cada página llama a este control como "encabezado de página". Este control de usuario se puede almacenar en caché directamente para enviar el rendimiento. Sin embargo, ahora este control de usuario Header.ascx debe mostrar el inicio de sesión. nombre de usuario, por lo que no puede utilizar directamente el siguiente método de almacenamiento en caché:
<% @ OutputCache Duration = " 86400 " VaryByParam = " None " %>.
En este momento, puede utilizar el método de "almacenar en caché páginas basadas en cadenas personalizadas", de la siguiente manera:
<%@ OutputCache Duration="86400" VaryByParam="None" VaryByCustom="HeaderPageKey" %>
Luego anule el método GetVaryByCustomString en la
cadena de anulación pública de la clase Global GetVaryByCustomString (contexto HttpContext, cadena personalizada)
{
if(personalizado=="HeaderPageKey")
{
//Control de encabezado de caché.ascx
si (contexto.Solicitud.Está autenticado)
{
devolver contexto.Usuario.Identidad.Nombre;
}
demás
{
devolver "NoAuthenticated_User";
}
}
devolver base.GetVaryByCustomString (contexto, personalizado);
}
Si el usuario no inició sesión, se almacenará en caché una versión. Si el usuario ya inició sesión, se almacenará en caché otra versión según el nombre de inicio de sesión. Jaja, se almacena en caché una versión para cada usuario. solución.
Para conocer la tecnología de almacenamiento en caché anterior, consulte http://msdn.microsoft.com/library/chs/default.asp?url=/library/CHS/cpguide/html/cpconcachingversionsofpagebasedonparameters.asp
Además, también se utiliza este método de almacenamiento en caché en MSPetShop3.0, se almacenan en caché diferentes versiones según Request.Querystring y si ha iniciado sesión. Sin embargo, este caché no parece estar habilitado de forma predeterminada.
Fuente: kaka.net