Personalmente yo uso el atributo VaryByCustom en hacerle conectado y salido con usuarios diferentes páginas vistas en caché:
<%@ OutputCache VaryByCustom="IsLoggedIn" Duration="30" VaryByParam="*" %>
después en global.asax se puso
public override string GetVaryByCustomString(HttpContext context,
string arg)
{
if (arg == "IsLoggedIn")
{
if (context.Request.IsAuthenticated)
{
return "Logged in: " + context.User.Identity.Name;
}
else
{
return "Not Logged In";
}
}
else
{
return base.GetVaryByCustomString(context, arg);
}
}
sólo voy a tirar esto por ahí ¿Qué tal el control de sustitución?
http://msdn.microsoft.com/en-us/library/ms228212.aspx
Según el sitio web de MSDN:
control de la sustitución le permite crear áreas de la página que puede ser actualiza dinámicamente y luego integrado en una página en caché. ... El control de sustitución ofrece una solución simplificada a la página parcial almacenamiento en caché para páginas donde la mayoría del contenido está en caché. Puede salida-almacenar en caché toda la página, y luego usar los controles de Sustitución para especificar las partes de la página que están exentas del almacenamiento en caché.
Nunca he usado el control de sustitución personalmente, pero el otro día lo busqué y parecía que de alguna manera puede inyectar contenido actualizado en un resultado de página en caché.