Como dice la pregunta, quería saber si es posible desactivar el almacenamiento en caché de todos los controladores y acciones para todo el sitio. ¡Gracias!¿Cómo desactivo el almacenamiento en caché de todo mi sitio web ASP.NET MVC 3?
9
A
Respuesta
15
crear un filtro de Acción Global y anular 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 registrar esto en su Global.asax, así:
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new DisableCache());
}
en resumen, lo que hace es crear un Global Action Filter para que implícitamente esto se aplique a todos los Controladores y todas las Acciones.
1
Sí, dependiendo del enfoque que tome. Me gusta aplicar las acciones a un controlador base (de ahí mi respuesta). Se podría aplicar el filtro en el siguiente enlace e implementarlo como un filtro global, así (registrado en su global.asax.cs)
5
Usted debe agregar este método para su Global.asax.cs archivo
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 desactiva la memoria caché en cada petición (imágenes, html, js, etc.).
1
En web.config se puede 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>
Cuestiones relacionadas
- 1. El almacenamiento en caché no funciona bien en mi sitio web ASP.NET MVC?
- 2. asp.net mvc - almacenamiento en caché
- 3. Almacenamiento de datos en caché en ASP.NET MVC 3
- 4. Escenario de almacenamiento en caché ASP.NET MVC
- 5. Asp.net MVC 2 almacenamiento en caché
- 6. Almacenamiento en caché en asp.net-mvc
- 7. ¿Cómo diseñar un sitio ASP.NET MVC para el almacenamiento en caché con Velocity?
- 8. ASP.NET MVC - compresión + almacenamiento en caché
- 9. ASP.Net Almacenamiento en memoria caché
- 10. ¿Cómo desactivo totalmente el almacenamiento en caché en nHibernate?
- 11. Probando el sitio web ASP.NET MVC
- 12. Almacenamiento en memoria caché en ASP.NET MVC Framework
- 13. El almacenamiento en caché de Donut está disponible en ASP.NET MVC 3
- 14. ASP.NET MVC El almacenamiento en caché varía según la autenticación
- 15. almacenamiento en caché vistas parciales en asp.net MVC
- 16. ¿Cómo debo almacenar la configuración de mi sitio ASP.NET MVC?
- 17. El entorno de desarrollo Rails 3 mantiene el almacenamiento en caché, incluso sin almacenamiento en caché?
- 18. Ayuda/Consejos para aumentar el rendimiento en mi sitio web ASP.NET MVC 2
- 19. almacenamiento en caché de página parcial y VaryByParam en ASP.NET MVC 3
- 20. ¿La forma más fácil de implementar todas las noches el sitio web ASP.NET MVC 3?
- 21. Implementación de DotNetOpenid en mi sitio web asp.net
- 22. ¿Cómo desactivo el "modo de compatibilidad" en Internet Explorer 8 para mi sitio web?
- 23. Caché de vistas parciales en ASP.NET MVC 3
- 24. ASP.NET MVC 3 La carga del sitio es extremadamente lenta
- 25. Implementación de búsqueda en un sitio web de ASP.NET MVC
- 26. ¿Puede ASP.NET MVC 3 ejecutarse dentro de un sitio web ASP.NET 3.5?
- 27. ¿Cómo puedo definir los usos en MVC 3 Razor View Engine en todo el sitio?
- 28. ¿Cómo uso OpenID en mi nuevo sitio web ASP.NET?
- 29. Primeros pasos con Spring 3 Web MVC - Configuración de todo
- 30. Inhabilitar el almacenamiento en caché en una vista parcial en MVC 3
Gracias por su respuesta. ¿Qué hay de las secuencias de comandos, imágenes y CSS? ¿El filtro de acción global afectaría a esos también? En otras palabras, ¿se llama a un filtro de acción para solicitudes a controladores/acciones o en cada solicitud? Como se mencionó en @AdamTuliper, no me gustaría guardar en caché esos – enamrik
@enamrik Hmmm ... después de probarlo parece que las imágenes y css todavía están en caché con este filtro de acción global. Tendría que investigar cómo prevenir esto. –
No importa, aparentemente esa es la definición misma de un filtro de acción que solo ejecutan en solicitudes a acciones – enamrik