谁能给个充分的理由为什么不用 querystring 方式来管理浏览器缓存?

2015-05-20 19:47:12 +08:00
 jokcy

知乎看到一篇文章提到前端工程化的概念,里面讲到了如何设置浏览器缓存以及如何更新浏览器缓存的问题。

似乎大家一致得到的结论就是使用修改文件名的方式而不喜欢使用带“?ver=XXX”的querystring的方式,但并没有说明理由。

唯一在讨论中看到一条貌似是一些代理设置或者一些中间服务商会忽略querystring的方式,带来意想不到的结果。

于是想跟大家讨论一下,这事为啥?

3045 次点击
所在节点    程序员
11 条回复
Vonex
2015-05-20 19:49:29 +08:00
设置Cache Header
jokcy
2015-05-20 19:50:28 +08:00
@Vonex 设置Cache Header是制造缓存,如何更新缓存呢
loading
2015-05-20 19:50:56 +08:00
用过cdn?
jokcy
2015-05-20 19:51:27 +08:00
@loading 能详解么,我用过,没自己建过cdn
kikyous
2015-05-20 19:55:10 +08:00
querystring 的方式会覆盖旧的静态文件,这样在多服务器部署的网站会出现问题
jokcy
2015-05-20 19:59:41 +08:00
@kikyous 哦~这倒是,那对于单服务器的形式,会有区别么?
loading
2015-05-20 20:05:42 +08:00
@jokcy 如果你用了cdn或多服务器,就会出现部分文件更新而另一个没更新,然后就跪了。
jokcy
2015-05-20 20:11:07 +08:00
@loading 哦,所以还是多服务器的问题咯,除了这一点还有别的优劣么?
gihnius
2015-05-20 21:39:41 +08:00
带版本的文件名比 query string 高效些吧。现在流行 filename-{md5}.ext 形式或用其它 salt.

query string 一般被认为是动态内容。比如 squid 默认就这样: http://wiki.squid-cache.org/ConfigExamples/DynamicContent
sodatea
2015-05-20 23:26:28 +08:00
jokcy
2015-05-21 09:25:28 +08:00
@sodatea 这个已经看过了的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/192531

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX