3

我正在阅读此源代码:

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

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

如果您摆脱整行代码镜像部分将消失。但是您可以将数字更改为您想要的任何数字,并且文本框将保留。

那个查询?v=125什么样的?

我从未见过有人使用它。

4

2 回答 2

7

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

当您想要将更新部署到文件并让所有用户立即获得更改而不是等待他们的缓存清除或手动清除它时,这很有用。

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

于 2013-04-22T22:36:20.283 回答
2

像资源这样的静态文件.js通常被配置为被浏览器缓存很长时间(1 年)。通过使用缓存中的资源,用户体验到更快的加载时间。

难题是:如果用户在缓存中有我的 JavaScript 文件,我如何保证更新后的文件立即被所有用户使用?

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

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

于 2013-04-22T23:33:56.457 回答