知乎看到一篇文章提到前端工程化的概念,里面讲到了如何设置浏览器缓存以及如何更新浏览器缓存的问题。
似乎大家一致得到的结论就是使用修改文件名的方式而不喜欢使用带“?ver=XXX”的querystring的方式,但并没有说明理由。
唯一在讨论中看到一条貌似是一些代理设置或者一些中间服务商会忽略querystring的方式,带来意想不到的结果。
于是想跟大家讨论一下,这事为啥?
1
Vonex 2015-05-20 19:49:29 +08:00
设置Cache Header
|
3
loading 2015-05-20 19:50:56 +08:00 via Android
用过cdn?
|
5
kikyous 2015-05-20 19:55:10 +08:00 2
querystring 的方式会覆盖旧的静态文件,这样在多服务器部署的网站会出现问题
|
9
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 |
10
sodatea 2015-05-20 23:26:28 +08:00
|