tutorial - ¿Cómo desactivo el almacenamiento en caché de todo mi sitio web ASP.NET MVC 3?
webform mvc (4)
Cree un filtro de acción global y anule OnResultExecuting()
:
public class DisableCache : ActionFilterAttribute
{
public override void OnResultExecuting(ResultExecutingContext filterContext)
{
filterContext.HttpContext.Response.Cache.SetExpires(DateTime.UtcNow.AddDays(-1));
filterContext.HttpContext.Response.Cache.SetValidUntilExpires(false);
filterContext.HttpContext.Response.Cache.SetRevalidation(HttpCacheRevalidation.AllCaches);
filterContext.HttpContext.Response.Cache.SetCacheability(HttpCacheability.NoCache);
filterContext.HttpContext.Response.Cache.SetNoStore();
}
}
Y luego registra esto en tu archivo.asax global, así:
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new DisableCache());
}
En resumen, lo que hace es crear un filtro de acción global para que implícitamente esto se aplique a todos los controladores y todas las acciones.
Como dice la pregunta, quería saber si es posible desactivar el almacenamiento en caché de todos los controladores y acciones de todo mi sitio. ¡Gracias!
Debe agregar este método a su archivo Global.asax.cs
protected void Application_BeginRequest(object sender, EventArgs e)
{
Response.AddHeader("Cache-Control", "no-cache, no-store, must-revalidate");
Response.AddHeader("Pragma", "no-cache"); // HTTP 1.0.
Response.AddHeader("Expires", "0"); // Proxies.
}
Esto deshabilita el caché en cada solicitud (imágenes, html, js, etc.).
En web.config puedes agregar encabezados adicionales para salir con cada respuesta
<configuration>
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="Cache-control" value="no-cache"/>
</customHeaders>
</httpProtocol>
</system.webServer>
</configuration>
Sí, dependiendo del enfoque que tome. Me gusta aplicar las acciones a un controlador base (de ahí mi respuesta). Puede implementar el filtro en el siguiente enlace e implementarlo como un filtro global (registrado en su global.asax.cs)
Deshabilitar el caché del navegador para todo el sitio web de ASP.NET