webform tutorial net mvc entre ejemplos diferencias asp asp.net-mvc-3 caching output-caching

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>