• 请不要在回答技术问题时复制粘贴 AI 生成的内容
jokcy
V2EX  ›  程序员

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

  •  
  •   jokcy · May 20, 2015 · 3608 views
    This topic created in 4095 days ago, the information mentioned may be changed or developed.

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

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

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

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

    11 replies    2015-05-21 09:25:28 +08:00
    Vonex
        1
    Vonex  
       May 20, 2015
    设置Cache Header
    jokcy
        2
    jokcy  
    OP
       May 20, 2015
    @Vonex 设置Cache Header是制造缓存,如何更新缓存呢
    loading
        3
    loading  
       May 20, 2015 via Android
    用过cdn?
    jokcy
        4
    jokcy  
    OP
       May 20, 2015
    @loading 能详解么,我用过,没自己建过cdn
    kikyous
        5
    kikyous  
       May 20, 2015   ❤️ 2
    querystring 的方式会覆盖旧的静态文件,这样在多服务器部署的网站会出现问题
    jokcy
        6
    jokcy  
    OP
       May 20, 2015
    @kikyous 哦~这倒是,那对于单服务器的形式,会有区别么?
    loading
        7
    loading  
       May 20, 2015 via Android
    @jokcy 如果你用了cdn或多服务器,就会出现部分文件更新而另一个没更新,然后就跪了。
    jokcy
        8
    jokcy  
    OP
       May 20, 2015
    @loading 哦,所以还是多服务器的问题咯,除了这一点还有别的优劣么?
    gihnius
        9
    gihnius  
       May 20, 2015
    带版本的文件名比 query string 高效些吧。现在流行 filename-{md5}.ext 形式或用其它 salt.

    query string 一般被认为是动态内容。比如 squid 默认就这样: http://wiki.squid-cache.org/ConfigExamples/DynamicContent
    sodatea
        10
    sodatea  
       May 20, 2015
    jokcy
        11
    jokcy  
    OP
       May 21, 2015
    @sodatea 这个已经看过了的
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3182 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 35ms · UTC 00:24 · PVG 08:24 · LAX 17:24 · JFK 20:24
    ♥ Do have faith in what you're doing.