据我所知,当文件名被更改或添加了查询字符串时,浏览器被迫获取新版本的缓存JS文件。
我们不这样做,直到现在我们从未遇到浏览器提供过时文件的问题。最近,我们看到一些使用IE9的用户抱怨浏览器提供缓存的JS / CSS文件。使用该网站的每个人都不一致这个问题。
我的理解是,当文件名或查询字符串未更改,但JS文件内容发生更改时,浏览器将获取新版本。
为什么会发生这种情况,为什么不一致?
有什么想法吗?
答案 0 :(得分:4)
在静态资源的HTTP标头中设置过期日期或最长期限,指示浏览器从本地磁盘而不是通过网络加载以前下载的资源。
如果我们想要实际缓存资源,这很好。如果我们想要强制新的下载集no-cache,它会强制缓存每次在释放缓存副本之前将请求提交到源服务器进行验证。这有助于确保认证(与公众结合),或保持严格的新鲜度,而不会牺牲缓存的所有好处。
答案 1 :(得分:1)
是的,当内容看起来相同(即文件名相同)时,用户可能会在后续访问中获得这些文件的缓存版本。
这实际上超出了您的控制范围......由每个特定的浏览器来决定如何处理缓存,这也取决于用户...有些人定期转储他们的缓存或者如果某些东西看起来不正确则刷新页面
如果您想强制用户查看更新的CSS或JS内容,请更改CSS或JS文件名...否则可能会在短暂但未知的时间段内出现不一致。
本教程可以帮助您......
答案 2 :(得分:0)
例如,Chrome缓存脚本直到Shift + F5或某个时间过期(并忽略它在服务器上更改的事实,它甚至不发送请求)。
由其他浏览器完成(但是当启用缓存时) - 我无法准确描述它何时发生