就像过去5 - 6年一样,我设计了所有的Web项目,因此所有前端资源(如javascript文件)都尽可能少地从服务器中获取
所以我在网络服务器上使用了expires
标题,并且有效期为1年。在前端,我在查询字符串中添加了这个版本
<script src="my_js_file.js?v=323"></script>
但是最近我经历过Goole Chrome对此变得更加严格,因此如果您不更改查询字符串中的版本?v=4939
,则必须清除浏览器缓存以更新您的javascript文件}。但有时看起来它不会总是更新缓存,即使版本是由一个添加
这是Chrome中的错误还是新的&#34;功能&#34;使互联网更快&#34;?如果是,这是一个糟糕的功能,不允许您控制您的网站版本
在开发网站时,这对我来说不是问题,但对于网站的用户来说这不是问题。新版本发布时缓存不会更新
答案 0 :(得分:0)
Chrome在最近的版本中确实更加积极地进行了缓存。
随着开发的devtools,刷新工作(过去几次清除)。 Chrome似乎记得
答案 1 :(得分:0)
由于某些浏览器并未确认将查询字符串更改为新文件,请改为使用
<script src="my_js_file.3.2.3.js"></script>
答案 2 :(得分:0)
出于测试/调试的目的,CTRL+F5
强制执行“硬刷新”以清除缓存。为了您的用户,您需要更改版本号,如@LGSon所说,但这对于调试来说是一个巨大的痛苦。
答案 3 :(得分:0)
在没有官方确认或可复制示例证明相反的情况下,我假设上面comment中已经声明的内容
如果您要更改查询字符串,它是一个不同的网址-浏览器无法缓存尚未访问过的网址
所以我会寻找另一个根本原因。现在,请注意OP在说什么:
这对我来说不是问题,但对网站用户而言
与此问题的my experience相符:实际上是部署问题。 如果发生这种情况,可能会发生:
.js
脚本的新版本被延迟(几分钟).js
脚本.js
在生产中最终被覆盖时,为时已晚,因为那些用户浏览器已经记下了新的调用。解决方案是确保新的.js
在调用它的页面的更新版本之前 部署到生产环境中。
顺便说一句,请注意-正如@LGSon的answer和其他this one这样的注释中所指出-查询参数可能会导致缓存 miss ,但这是相反问题,而不是问题中描述的问题,即缓存中的陈旧数据。