【发布时间】:2011-04-20 01:36:06
【问题描述】:
从http://html5boilerplate.com/ (ctrl+f "?v=1") 的代码中可以看出 ?v=1 到底是做什么的?它附加在外部 css 和 js url 上。
【问题讨论】:
标签: javascript css url
从http://html5boilerplate.com/ (ctrl+f "?v=1") 的代码中可以看出 ?v=1 到底是做什么的?它附加在外部 css 和 js url 上。
【问题讨论】:
标签: javascript css url
这样做是为了规避浏览器缓存。这个想法是,当这些文件发生变化时,您将增加版本号,从而强制浏览器再次获取文件。
【讨论】:
只是一种缓存破法,例如:
myScript.js?v=1
我可以(通过缓存头)告诉你永远缓存它,然后当我推送一个新版本时,它是:
myScript.js?v=2
而您的浏览器将其视为一个新文件,它需要大量获取,并且 它 也可以永久缓存,因此基本上您可以获得最大缓存优势,并且仍然强制客户端重新获取当有新版本时。如果可能,此版本将是构建过程的结果,在文件更改时自动更新(或至少一个新的构建,推送,无论如何)。
作为一个真实的工作示例,看看你现在正在查看的页面:
http://sstatic.net/js/master.js?v=66ffcb6dcc55
它是文件的哈希值...每当它更改时,URL 末尾的哈希值也会发生变化,您的浏览器会抓取一个新副本。
【讨论】:
它本身并没有做任何事情。
它只是 URL 的一部分。它遵循查询字符串的通常模式,因此服务器端进程可能会注意它并修改脚本。
很可能,这只是 URL 的更改,它仍会从完全相同的位置提供静态文件……但由于 URL 与 v=0 不同,它会破坏任何缓存以确保浏览器获取当页面被更新为使用该 URL 作为脚本时,该版本至少与最新版本一样新。
【讨论】: