【问题标题】:Do newer browser versions have a way of determining if changes have been made to a .js file?较新的浏览器版本是否可以确定是否对 .js 文件进行了更改?
【发布时间】:2012-06-22 04:53:20
【问题描述】:

我一直在阅读人们在浏览器缓存旧版本的 javascript 文件并且在进行更改时不下载新版本时遇到的问题。但是,每次我对 js 文件进行更改时,关闭浏览器并打开它(甚至刷新页面)都会反映更改。我已经在 IE9、FF13、Chrome18 和 Safari 5 中尝试过。

较新的浏览器版本是否可以确定是否对 .js 文件进行了更改,然后用缓存中的新版本替换旧版本?

【问题讨论】:

  • 要将其放入足够长的字母数以满足评论过滤器,不。这是并且一直是缓存管理问题。

标签: javascript


【解决方案1】:

这与浏览器或浏览器版本无关。这与缓存指令有关。

如果您的服务器正在输出标头,允许客户端缓存资源,那么它将被缓存。如果您的服务器输出标头指示客户端不缓存,那么它(通常)不会被缓存。

另请参阅:http://www.w3.org/Protocols/rfc2616/rfc2616-sec13.html

如果服务器指定Must-Revalidate,浏览器会检测是否需要加载新版本。

https://stackoverflow.com/a/8729854/362536

【讨论】:

  • 我认为 apache2(我使用的)的默认设置是不允许客户端缓存它?
  • @user784637, Apache2 的配置文件太多了,很难说你的特定“默认”选项是什么。 (通常,配置是由包维护者为您的特定发行版设置的。)检查的最简单方法是打开浏览器的开发人员工具并检查返回的 JS 文件的标题。您还可以使用 Fiddler 或 Wireshark 等工具。
  • @user784637,看看这个:metaskills.net/2006/02/19/…
  • 谢谢布拉德回家后会试试这个
  • 不完全是 nothing 与浏览器有关,它是服务器发送正确指令和跟随它们的 UA 的组合。浏览器可能由于各种原因(用户设置或操作、编程错误或设计等)而不会这样做。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-30
  • 1970-01-01
  • 1970-01-01
  • 2014-02-25
  • 2018-06-29
  • 1970-01-01
相关资源
最近更新 更多