Tengo una aplicación ASP.NET MVC. Sin embargo, debo almacenar en caché algunas páginas solo para usuarios no autenticados.Cómo desactivar el almacenamiento en caché de salida para usuarios autenticados en ASP.NET MVC?
He intentado utilizar VaryByCustom="user"
con la aplicación GetVaryByCustomString
siguiente:
public override string GetVaryByCustomString(HttpContext context, string custom)
{
if (custom == "user")
{
if (context.User.Identity.IsAuthenticated)
{
return context.User.Identity.Name;
}
else
{
return "";
}
}
return base.GetVaryByCustomString(context, custom);
}
Sin embargo, esto no es exactamente lo que necesito porque las páginas todavía están en caché. La única diferencia es que ahora se almacena en caché para cada usuario por separado.
Una posible solución es devolver Guid.NewGuid()
cada vez que el usuario está autenticado, pero me parece una enorme pérdida de recursos.
¿Tienes algún consejo para mí?
¡Genial! Buena solución. –
Interesante: ¿ha tenido algún problema con este método desde esta publicación (hace 1 año)? Gracias – UpTheCreek
@UpTheCreek: Utilizamos una versión un poco más complicada de este código en nuestro producto. Obviamente, no garantizo nada, pero en mi experiencia funciona. –