浏览器何时自动清除外部JavaScript文件的缓存?

时间:2008-10-15 22:33:32

标签: caching browser

我有一个JavaScript资源,可以随时进行编辑。一旦它被编辑,我希望它能够相对快速地传播到用户的浏览器(比如大概15分钟左右),但是,这个资源编辑的频率很少而且很远(可能每月2个)。

我宁愿在浏览器中缓存资源,因为它会被频繁检索,但我也希望缓存能够以半定期的间隔在浏览器上重置。

我知道我可以在请求资源时传递无缓存标头,但我想知道如果我没有通过无缓存,缓存会在浏览器上自动重置。

我想这对于每个浏览器都是独立的,但我不确定。

我尝试谷歌这个,但我发现的大多数点击是关于清除浏览器的缓存...这不是我正在寻找的。

3 个答案:

答案 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。

了解更多信息: