net mvc control cache asp c# asp.net-mvc asp.net-mvc-4 browser-cache

c# - control - ¿Cómo borrar la caché del navegador en el botón Atrás del navegador, haga clic en MVC4?



net core caching (2)

Sé que esta es una pregunta popular en stackoverflow. He hecho las mismas preguntas y no puedo encontrar la respuesta correcta para mí. Este es mi controlador de cierre de sesión Acción Resultado

[Authorize] public ActionResult LogOut(User filterContext) { Session.Clear(); Session.Abandon(); Session.RemoveAll(); Response.Cache.SetCacheability(HttpCacheability.NoCache); Response.Cache.SetExpires(DateTime.UtcNow.AddHours(-1)); Response.Cache.SetNoStore(); FormsAuthentication.SignOut(); return RedirectToAction("Home", true); }

No funcionó para mí. También intenté agregar-

<meta http-equiv="Cache-Control" content="no-cache" /> <meta http-equiv="Pragma" content="no-cache"/> <meta http-equiv="Expires" content="0"/>

ninguno de estos resolvió mi problema.


El problema con su enfoque es que lo está configurando donde ya es demasiado tarde para que MVC lo aplique. Las siguientes tres líneas de su código deben colocarse en el método que muestra la vista (en consecuencia, la página) que no desea mostrar.

Response.Cache.SetCacheability(HttpCacheability.NoCache); Response.Cache.SetExpires(DateTime.UtcNow.AddHours(-1)); Response.Cache.SetNoStore();

Si desea aplicar el comportamiento de "no caché en el navegador de vuelta" en todas las páginas, debe colocarlo en global.asax.

protected void Application_BeginRequest() { Response.Cache.SetCacheability(HttpCacheability.NoCache); Response.Cache.SetExpires(DateTime.UtcNow.AddHours(-1)); Response.Cache.SetNoStore(); }


Simplemente configure el caché de salida en la acción. He utilizado este enfoque en muchos proyectos:

[HttpGet, OutputCache(NoStore = true, Duration = 1)] public ActionResult Welcome() { return View(); }

El atributo anterior básicamente le indicará al navegador que obtenga una copia nueva de la página de la acción de su controlador si el usuario navega hacia atrás / adelante a su vista.

También puede definir su almacenamiento en caché en web.config y usarlo junto con este atributo para evitar algunas repeticiones. Mira here