我有一个JavaScript资源,可以随时进行编辑。一旦它被编辑,我希望它能够相对快速地传播到用户的浏览器(比如大概15分钟左右),但是,这个资源编辑的频率很少而且很远(可能每月2个)。
我宁愿在浏览器中缓存资源,因为它会被频繁检索,但我也希望缓存能够以半定期的间隔在浏览器上重置。
我知道我可以在请求资源时传递无缓存标头,但我想知道如果我没有通过无缓存,缓存会在浏览器上自动重置。
我想这对于每个浏览器都是独立的,但我不确定。
我尝试谷歌这个,但我发现的大多数点击是关于清除浏览器的缓存...这不是我正在寻找的。 p>
答案 0 :(得分:53)
您可以将版本字符串作为get参数传递给脚本标记的URL。该参数不会被静态JavaScript文件评估,但会强制浏览器获取新版本。
如果您不想在每次编辑源时分配版本字符串,您可以根据文件系统时间戳或您的subversion提交编号计算它:
<script src="/script.js?time_stamp=1224147832156" type="text/javascript"></script>
<script src="/script.js?svn_version=678" type="text/javascript"></script>
答案 1 :(得分:14)
在您的javascript代码上添加一个版本,在您进行更改时会更新
<script src="/code.js?ver=123" type="text/javascript"></script>
然后他们将始终获得新版本。
答案 2 :(得分:13)
HTTP提供了几种用于缓存的控件,浏览器以不同的方式忽略这些控件。如果您设置了合理的到期日期,大多数浏览器都会检查他们当前版本是否具有合适的频率。
您希望在此处包含的搜索字词(以避免浏览器用户说明)是HTTP。
了解更多信息: