ASP.NET / MVC Bundler Cache不起作用

时间:2015-07-01 11:54:02

标签: asp.net asp.net-mvc caching bundle

在MVC5项目中,我们遇到了捆绑资源(js / css)缓存的问题。

根据mvc docs,默认情况下应该缓存捆绑包。它适用于其他项目。但是,在这里,无论采用何种配置,我们资源的响应头都是

Cache-Control: no-cache, no-store
Connection: Keep-Alive
Content-Encoding: gzip
Content-Type: text/javascript; charset=utf-8
Date: Wed, 01 Jul 2015 11:22:11 GMT
Expires: -1
Keep-Alive: timeout=5, max=100
Pragma: no-cache
Server: Microsoft-IIS/8.5
Transfer-Encoding: chunked
Vary: Accept-Encoding

我无法弄清楚这是从哪里来的,因为我们没有在任何地方禁用缓存。有什么想法吗?

1 个答案:

答案 0 :(得分:4)

正如我在评论中所建议的那样,Igor声称在Global.asax中存在禁用缓存的代码:

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

Igor只是告诉你这些行是修复“浏览器后退按钮”场景的建议方法之一(但你可以看到一些缺点)。简单的方案步骤:

  1. 登录应用程序 - 将用户中的“looged”重定向到主页
  2. 注销 - 用户重定向到登录页面
  3. 点击后退浏览器按钮 - 不应将用户重定向到主页,但启用了缓存可能是个问题。
  4. 请检查后面的浏览器按钮功能。如果我写的场景对你来说是个问题,请使用属性

    [OutputCache]
    

    使用适当的参数。

    关心Piotr