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