如何清除浏览器缓存在浏览器的后退按钮单击在MVC4

2024-12-04 11:31:53
推荐回答(2个)
回答1:

  我知道这是在StackOverflow的一个流行的问题。我已经通过每一个问题消失了,我无法找到正确的答案 这是我记录了控制器操作结果
  [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);

  }

  它不工作 我也想加入,没有这些解决了我的问题。
  

  1. 用你的方法的问题是,你设置它的地方是为时已晚的MVC应用它。下面的三行代码应放在显示的视图(因此该页面),您不想显示。
  Response.Cache.SetCacheability(HttpCacheability.NoCache);
  Response.Cache.SetExpires(DateTime.UtcNow.AddHours(-1));
  Response.Cache.SetNoStore();

  如果你想申请的所有页面上的“关于浏览器的后退没有缓存”的行为,那么你应该把它放在Global.asax中。
  protected void Application_BeginRequest()
  {
  Response.Cache.SetCacheability(HttpCacheability.NoCache);
  Response.Cache.SetExpires(DateTime.UtcNow.AddHours(-1));
  Response.Cache.SetNoStore();
  }

  2. 刚刚成立的动作的输出缓存。我在很多项目中这种方法:
  [HttpGet, OutputCache(NoStore = true, Duration = 1)]
  public ActionResult Welcome()
  {
  return View();
  }

回答2:

你的做法的问题是您要设置它已经太晚了 MVC 应用它。以下三行代码的应该是在显示你不想要显示的视图 (因此页) 的方法。
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Cache.SetExpires(DateTime.UtcNow.AddHours(-1));
Response.Cache.SetNoStore();

如果您希望在所有页上应用"无缓存浏览器背上"行为,那么你应该把它放在 global.asax 中。
protected void Application_BeginRequest()
{
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Cache.SetExpires(DateTime.UtcNow.AddHours(-1));
Response.Cache.SetNoStore();
}