Tengo un proyecto asp.net mvc 3 y tengo un controlador doméstico. He marcado mi acción índice con este atributo:ASP.NET MVC OutputCache varían en * y varían según la cookie del usuario
[OutputCache(Location = System.Web.UI.OutputCacheLocation.Any, Duration = 120, VaryByParam = "*", VaryByCustom = "user")]
public ActionResult Index()
{
return View();
}
La varían según la medida con que se maneja en Global.asax.cs para comprobar el valor de la cookie de usuario del usuario de modo que los cambios de almacenamiento en caché en función de si el usuario está conectado o no y qué usuario son.
Cuando voy a esta página en mi servidor web, consigo estas cabeceras en la respuesta:
Cache-Control public, max-age=120
Content-Type text/html; charset=utf-8
Content-Encoding gzip
Expires Sun, 20 Mar 2011 21:50:09 GMT
Last-Modified Sun, 20 Mar 2011 21:48:09 GMT
Vary Accept-Encoding
Date Sun, 20 Mar 2011 21:48:09 GMT
Content-Length 3105
De buenas a primeras, la Vary - valor Accept-Encoding se ve mal, ¿no debería tener envió un Vary - * en su lugar?
Estoy representando la propiedad User.Identity.Name en esta vista también y me doy cuenta de que incluso cuando cierro la sesión seguirá representando el nombre de usuario, hasta que caduquen los 120 segundos.
public override string GetVaryByCustomString(HttpContext context, string custom)
{
if (custom.Equals("user", StringComparison.OrdinalIgnoreCase))
{
HttpCookie cookie = context.Request.Cookies["user"];
if (cookie != null)
{
return cookie.Value;
}
}
return base.GetVaryByCustomString(context, custom);
}
estado jugando con esto durante varias horas, y estoy completamente atascado, es de esperar que alguien tiene una idea ...
Super que es bueno saber – jjxtra
Muy buen consejo. No sé por qué es falso por defecto en IIS7.0, lo que nos lleva a un caché de resultados con errores –