【问题标题】:Browser cache not expiring浏览器缓存未过期
【发布时间】:2017-03-29 17:47:11
【问题描述】:

我正在 asp.net 中开发我的应用程序,并希望在一段时间后强制刷新 .js 文件。为了在本地环境中进行测试,我对 web.config 文件进行了以下更改:

<httpProtocol>
  <customHeaders>
    <add name="Cache-Control" value="must-revalidate max-age=120" />
  </customHeaders>
</httpProtocol>

据我了解缓存控制,基于上述设置,浏览器缓存应在 2:00 分钟后过期,并且任何新的回发都应向网络服务器发送请求以检查新版本的 .js 是否可用。我使用 fiddler 来监控网络流量,我没有看到任何对 js 文件的请求。我使用的浏览器是 Chrome。所以我使用开发工具来监控网络流量。我看到浏览器正在使用该文件的缓存版本。

是否有任何其他设置会强制浏览器使缓存文件过期?

【问题讨论】:

    标签: asp.net browser-cache cache-control


    【解决方案1】:

    您的Cache-Control 无效,请尝试用逗号分隔值:must-revalidate, max-age=120

    来自RFC 7234 Hypertext Transfer Protocol (HTTP/1.1): Caching的相关摘录:

    Cache-Control = 1#cache-directive

    cache-directive = token ["="(token/quoted-string)]

    以及来自RFC 7230 Hypertext Transfer Protocol (HTTP/1.1): Message Syntax and Routing的ABNF列表扩展:

    定义了一个构造“#”,类似于“*”,用于定义 逗号分隔的元素列表。完整的形式是“#element” 表示至少 和最多 个元素,每个元素由 单个逗号 (",") 和可选空格 (OWS)。

    还要确保将新配置放在正确的位置。更多信息请查看Is it possible to add response http headers in web.config?

    【讨论】:

      猜你喜欢
      • 2017-03-30
      • 2011-11-12
      • 1970-01-01
      • 1970-01-01
      • 2010-10-14
      • 1970-01-01
      • 2010-10-19
      • 1970-01-01
      • 2012-04-09
      相关资源
      最近更新 更多