HTML脚本标记中此查询组件的用途是什么?

时间:2013-04-22 22:34:42

标签: javascript html http caching

我正在阅读这个源代码:

https://github.com/leobalter/PimpMyCode/blob/master/index.html#L20

<script src="js/compiled.min.js?v=125" async></script>

如果你摆脱整行,CodeMirror部分就会消失。但您可以将数字更改为您想要的任何内容,文本框将保留。

?v=125做什么查询

我从未见过有人使用此功能。

2 个答案:

答案 0 :(得分:7)

它会破坏浏览器缓存(即更改浏览器用于识别缓存文件的文件的URL,强制浏览器在查询字符串值发生更改时重新下载文件。)

当您希望将更新部署到文件并让所有用户立即获得更改时,这非常有用,而不必等待其缓存清除或手动清除。

价值本身并不重要。它不会更改输出,服务器也不会使用它。它只是迫使浏览器下载新版本。

答案 1 :(得分:2)

.js资源等静态文件通常配置为由浏览器缓存很长时间(1年)。通过在缓存中使用资源,用户可以获得更快的加载时间。

难题是:如果用户在缓存中有我的JavaScript文件,我如何保证所有用户一次性使用更新的文件?

输入querystring参数。 ?v=125是一个标识符,可能是某种版本号。修改和释放资源时,此数字(或字符串)将更改为新的未使用值。附加到资源名称的参数会导致资源像缓存一样处理全新文件。因此,即使用户在缓存中有script.jsscript.js?v=124,也会直接从服务器加载script.js?v=125,其中包含所有最新和最好的代码。

接受的答案包含一个奇怪的短语。 “它打破了浏览器缓存”听起来很危险!没关系,因为这不是字面会发生什么。缓存很好。实际上,旧的?v=124文件仍然存在!独特的资源命名方案只会导致无害的缓存未命中