从JavaScript文件强制缓存过期

Bil*_*lga 9 javascript firefox caching

我有一个旧版本的JS文件缓存在用户的浏览器上,过期设置为10年(从那时起,我已经学会了如何在我的Web服务器上正确设置过期标题).我已经对JS文件进行了更新,我希望我的用户能够从中受益.

  • 有没有办法我的网络服务器可以强制用户的浏览器清除这个文件的缓存,而不是提供不同名称的JS文件?
  • 将来,如果expires头文件设置不正确(偏执狂),我的JS文件是否可以自动过期并强制重新加载,比如说,自缓存后的一天过去了?

编辑:理想情况下,我想在更改承载脚本的页面上的HTML标记的情况下解决此问题.

Mat*_*att 19

总之......不.

您可以在脚本标记的源地址末尾添加内容.浏览器会将此视为与当前缓存的文件不同的文件.

<script src="/js/something.js?version=2"></script>
Run Code Online (Sandbox Code Playgroud)

不确定你的其他选择.

  • 通过写一篇关于制作傲慢内容缓存决策的危险的忏悔博客文章来获利.我会为你加油. (2认同)

小智 6

在HTML5中,您可以使用应用程序缓存,这样您就可以控制缓存何时到期

您需要添加清单的路径

<!DOCTYPE HTML><html manifest="demo.appcache">

在demo.appcache文件中,您可以放置​​要缓存的每个文件

CACHE MANIFEST
# 2013-01-01 v1.0.0
/myjsfile.js
Run Code Online (Sandbox Code Playgroud)

当您希望浏览器下载新文件时,您可以更新清单

CACHE MANIFEST
# 2013-02-01 v1.0.1
/myjsfile.js
Run Code Online (Sandbox Code Playgroud)

当浏览器看到清单发生变化时,请确保使用发布日期或版本(或其他内容)修改缓存清单,它将下载其中的所有文件.

如果清单未更改,则浏览器将不会更新本地文件,即使该文件已在服务器上进行了修改.

有关详细信息,请查看HTML5应用程序缓存