如何清除浏览器caching浏览器后退button点击MVC4?

我知道这是在stackoverflow中的一个stream行的问题。 我经历了同样的问题,我无法为我find正确的答案。 这是我的注销控制器的行动结果

[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); } 

这不适合我。 我也尝试添加 –

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

这些都没有解决我的问题。

你的方法存在的问题是,你正在把它设置在MVC应用它已经太晚的地方了。 您的代码的以下三行应放在显示您不想显示的视图(因此,页面)的方法。

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

如果你想在所有页面上应用“无caching浏览器”的行为,那么你应该把它放在global.asax。

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

只需在动作上设置输出caching。 我在许多项目中使用了这种方法:

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

上述属性将基本上指示浏览器从控制器操作中获取新的页面副本,如果用户导航回到/转发到您的视图。

您也可以在web.config中定义caching,并与此属性配合使用以避免重复。 看到这里