ASP.NET/MVC Bundler 缓存不起作用

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

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

根据mvc docs ,默认情况下应该缓存 bundle 。它也适用于其他项目。然而,在这里,无论什么配置,我们资源的响应头都是

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

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

最佳答案

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

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

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

  1. 登录应用程序 - 登录的用户将被重定向到主页
  2. 注销 - 用户重定向到登录页面
  3. 点击返回浏览器按钮 - 用户不应被重定向到主页,但启用缓存后可能会出现问题。

请检查后退浏览器按钮的功能。如果我写的场景对您来说有问题,请使用属性

[OutputCache]

具有适当的参数。

问候皮奥特

关于ASP.NET/MVC Bundler 缓存不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31160549/

相关文章:

c# - Asp.net 中的 JavaScript,C#

asp.net-mvc - ASP.NET Core Tag Helper Checkbox 不保存未选中的值

asp.net-mvc - 在扩展方法中使用 IoC

ruby-on-rails - Redis:在 httparty 客户端中正确缓存来自 API 的响应,根据 api 响应中的缓存 header 使缓存过期

c# - 带有文本框的 ASP.NET 动态 ASP 表 - 在 ViewState 中保存值

c# - 仅使用 CSS 更改 ASP DropDownList 的背景颜色

c# - 关于 C# 的 AOP 的建议

asp.net-mvc - Windows 8 上的脚手架

python - 是否有一个装饰器可以简单地缓存函数返回值?

caching - L1、L2 和 L3 缓存如何与多个并发运行的进程配合使用?