谷歌浏览器中没有清除缓存
当我部署版本时,我会将数字作为查询字符串添加到JavaScript和CSS文件中,如下所示:谷歌浏览器中没有清除缓存
'app/source/scripts/project.js?burst=32472938'
我正在使用上面的方法来在浏览器中缓存缓存。
但在Firefox中,我得到了我修改的最新脚本。 但在Chrome中,我没有得到我修改的最新脚本。相反,我得到了旧的。
但在开发者控制台中,我看到最新修改的突发数字。
我不确定这些日子是否仍然适用,但是在过去的某些情况下,代理可能导致为了缓存目的而忽略查询字符串值。 2008年有一篇文章讨论了查询字符串值不适合破解缓存的想法,并且最好修改文件名本身 - 因此,引用project_32472938.js而不是使用查询字符串。
(我也在某些地方看到了一些关于某些客户没有看到这些更新的异常情况的讨论,但它似乎并不一致 - 不一定与Chrome绑定,但更可能与特定在特定的机器上安装Chrome浏览器肯定会推荐在另一台计算机上检查该网站,以查看是否在该网站上重复了该问题,因为您至少可以缩小它是否是Chrome浏览器或您的特定Chrome浏览器有问题。)
说了这么多,自2008年以来已有相当长的一段时间了,现在可能还不适用。但是,如果它仍然是一个问题 - 并且你无法找到解决根本问题的解决方案 - 它至少提供了一种方法来绕过它。
我不认为Chrome的真正原因导致的问题,因为它 会打破几乎所有的网络应用程序 (如:https://www.google.com/searchQ =针?)
这可能是因为您的部署是一个有点延迟,例如。
- 开始安装新的脚本
- 请与Chrome浏览器(接收新的ID旧版本)
- 安装完成
- 你尝试用火狐(接收到新的版本)
- Chrome仍然会显示旧的版本,因为它使用新ID缓存旧脚本
或者您在您的Web服务器和浏览器之间有一个类似Azure的CDN。
使用标准设置Azure CDN会忽略高速缓存哈希的查询字符串。
尝试这些元标签:
<meta http-equiv="cache-control" content="max-age=0" />
<meta http-equiv="cache-control" content="no-cache" />
<meta http-equiv="expires" content="0" />
<meta http-equiv="expires" content="Tue, 01 Jan 1980 1:00:00 GMT" />
<meta http-equiv="pragma" content="no-cache" />
我希望..如果我设置这个,那么将不会有任何缓存.. :-( –
我不能肯定,但对于尝试...
谷歌克罗默总是忽视吧..
每次在网站上按下网址时,您都需要为每个链接添加一个'?random.number'或者“?date.code”。 例如,如果'myhomepage.html?272772'存储在缓存中,则通过生成一个新的随机数,例如'myhomepage.html?2474789',谷歌浏览器将被迫查找新副本。
您的项目是否使用服务人员? –