【问题标题】:adding on ?v=1 to urls添加 ?v=1 到网址
【发布时间】:2011-04-20 01:36:06
【问题描述】:

http://html5boilerplate.com/ (ctrl+f "?v=1") 的代码中可以看出 ?v=1 到底是做什么的?它附加在外部 css 和 js url 上。

【问题讨论】:

    标签: javascript css url


    【解决方案1】:

    这样做是为了规避浏览器缓存。这个想法是,当这些文件发生变化时,您将增加版本号,从而强制浏览器再次获取文件。

    【讨论】:

      【解决方案2】:

      只是一种缓存破法,例如:

      myScript.js?v=1
      

      我可以(通过缓存头)告诉你永远缓存它,然后当我推送一个新版本时,它是:

      myScript.js?v=2
      

      而您的浏览器将其视为一个新文件,它需要大量获取,并且 也可以永久缓存,因此基本上您可以获得最大缓存优势,并且仍然强制客户端重新获取当有新版本时。如果可能,此版本将是构建过程的结果,在文件更改时自动更新(或至少一个新的构建,推送,无论如何)。


      作为一个真实的工作示例,看看你现在正在查看的页面:

      http://sstatic.net/js/master.js?v=66ffcb6dcc55
      

      它是文件的哈希值...每当它更改时,URL 末尾的哈希值也会发生变化,您的浏览器会抓取一个新副本。

      【讨论】:

      • 所以大概应该只做,如果你经常期望你的 js 文件改变?
      • 没有。如果您希望您的 JS 更改不频繁,您可以将它与缓存控制标头中的长过期时间结合起来。
      • @spacemonkeys - 是的,或者不经常,当你想获得最大的缓存好处时,你可以走这条路……带宽越大不缓存 i> 吃,这变得越重要。
      • @David - 无论是否频繁更改都没有坏处,这在两种情况下都同样适用,最大限度地减少客户端获取当前文件或新文件所需的 HTTP 请求数。跨度>
      • @All ... 抱歉,我想我有点错过阅读答案,v1 = 如果您希望文件永远不会更改,请执行此操作,这对性能有好处
      【解决方案3】:

      它本身并没有做任何事情。

      它只是 URL 的一部分。它遵循查询字符串的通常模式,因此服务器端进程可能会注意它并修改脚本。

      很可能,这只是 URL 的更改,它仍会从完全相同的位置提供静态文件……但由于 URL 与 v=0 不同,它会破坏任何缓存以确保浏览器获取当页面被更新为使用该 URL 作为脚本时,该版本至少与最新版本一样新。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-08-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-02-01
        • 2019-05-03
        相关资源
        最近更新 更多