在Safari中使用浏览器后退按钮时,从浏览缓存重新加载Asp.net mvc视图/页面

时间:2014-11-12 06:33:34

标签: asp.net asp.net-mvc http caching safari

我使用浏览器后退按钮时总是从缓存中获取Asp.net MVC页面/视图。此问题仅适用于safari浏览器,可在其他浏览器(如Chrome,Firefox和IE)中正常运行。我经历了很多帖子,描述了类似的问题。但到目前为止,我无法找到解决方案。

这是我的操作方法

中的代码
[OutputCache(Duration = 0, Location = OutputCacheLocation.Any, VaryByParam = "*")]
 public ActionResult ABC(string taxonomy)
 {
    return View()
 }

在safari响应中显示如下

Cache-Control:public, max-age=0, s-maxage=0
Connection:Close
Content-Length:15849
Content-Type:text/html; charset=utf-8
Date:Wed, 12 Nov 2014 06:07:55 GMT
Expires:Wed, 12 Nov 2014 06:07:52 GMT
Last-Modified:Wed, 12 Nov 2014 06:07:52 GMT
Server:ASP.NET Development Server/10.0.0.0
Vary:*
X-AspNet-Version:4.0.30319
X-AspNetMvc-Version:4.0

我还尝试将bleow代码添加到操作方法

[OutputCache(Duration = 0, Location = OutputCacheLocation.Any, VaryByParam = "*")]
public ActionResult ABC(string taxonomy)
{
HttpContext.Response.Cache.SetCacheability(HttpCacheability.NoCache);
HttpContext.Response.AppendHeader("Cache-Control", "private, no-cache, no-store, must-revalidate, max-age=0, proxy-revalidate, s-maxage=0"); // HTTP 1.1.
HttpContext.Response.AppendHeader("Pragma", "no-cache"); // HTTP 1.0.
HttpContext.Response.AppendHeader("Expires", "0"); // Proxies.
HttpContext.Response.AppendHeader("Vary", "*");
}

所以响应如下

Cache-Control:no-cache
Connection:Close
Content-Length:15849
Content-Type:text/html; charset=utf-8
Date:Wed, 12 Nov 2014 06:20:58 GMT
Expires:-1
Pragma:no-cache, no-cache
Server:ASP.NET Development Server/10.0.0.0
X-AspNet-Version:4.0.30319
X-AspNetMvc-Version:4.0

但是当我使用浏览器的后退按钮时,无论我做什么,Safari都会从缓存中获取页面。请帮助解决这个问题的解决方案/建议。

2 个答案:

答案 0 :(得分:0)

我遇到类似Safari的问题,并在body标签中添加了onunload="",我解决了它。 检查:Preventing cache on back-button in Safari 5

答案 1 :(得分:0)

我发现这种替代方法解决了我的问题。希望这能帮助每个面临类似问题的人How do you disable back and forward caching on iOS Safari?