【问题标题】:static content not caching in Asp.net MVC静态内容未在 Asp.net MVC 中缓存
【发布时间】:2017-11-08 17:36:13
【问题描述】:

我想缓存我所有的 mvc 应用程序的静态内容。

我在 Content 文件夹中添加了这样的 Web.config 文件

我从我的服务器获得了正确的响应标头。

即使在收到带有 max-age 属性的标头后,对服务器的下一个请求也会使用 Cache-Control: no-cache

这再次检索整个数据。

它没有缓存。

我想知道我在这里缺少什么。提前致谢。

【问题讨论】:

  • 提供的静态内容是什么? HTML?图片?还有什么?
  • 我正在尝试缓存 css 文件
  • 它是一个公开的 css 文件,您愿意分享链接,以便我们进行测试吗?
  • 是的,它是一个公共的css文件。

标签: c# asp.net asp.net-mvc asp.net-mvc-4 caching


【解决方案1】:

屏幕截图中的 no-cache 是 request 标头,而不是 response 标头。

它可能是由您的浏览器发出的,以响应您强制刷新 (Control-F5)。浏览器实际上是在说“请给我新数据,我不想要缓存的数据”。服务器端无法控制这一点 - 客户端是发出请求的人。

如果您没有强制刷新,那么您可能禁用了浏览器缓存(例如 https://stackoverflow.com/a/7000899/34092 )。

另见https://stackoverflow.com/a/14544664/34092

【讨论】:

  • 是的,我的屏幕截图中的 no-cache 是一个请求标头。但是,即使在服务器设置了响应标头(max-age=3600)之后,我的浏览器也会要求提供数据。
  • 允许浏览器这样做。你最终无法阻止它这样做。将缓存标头视为浏览器的“提示”——它不必关注它们。您是否禁用了浏览器上的缓存(例如stackoverflow.com/a/7000899/34092)?
  • 那么即使在将其响应标头设置为 max-age=3600 之后,浏览器仍要求数据的原因可能是什么
  • 主要的两个原因是我提到的那些。您强制刷新页面 (Control-F5) 或禁用浏览器中的缓存。
  • 非常感谢。打开开发者工具时,我的浏览器禁用了缓存。
猜你喜欢
  • 2011-06-24
  • 1970-01-01
  • 2016-08-13
  • 1970-01-01
  • 2011-08-19
  • 1970-01-01
  • 2014-02-28
  • 1970-01-01
  • 2015-08-07
相关资源
最近更新 更多