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

Javascript HTML脚本标记中此查询组件的用途是什么?,javascript,html,http,caching,Javascript,Html,Http,Caching,我正在阅读以下源代码: 如果去掉整行代码,代码镜像部分就会消失。但是你可以把号码改成任何你想要的,文本框就会保留下来 查询像?v=125在做什么 我从未见过有人用过这个 它会中断浏览器缓存(即,更改浏览器用于标识缓存文件的文件的url,每当查询字符串值更改时,浏览器都会强制重新下载该文件。) 当您希望将更新部署到文件并让所有用户立即获得更改时,这非常有用,而不必等待他们的缓存清除或手动清除 价值本身并不重要。它不会更改输出,服务器也不会使用它。它只是强制浏览器下载新版本。静态文件,如.js

我正在阅读以下源代码:


如果去掉整行代码,代码镜像部分就会消失。但是你可以把号码改成任何你想要的,文本框就会保留下来

查询
?v=125
在做什么


我从未见过有人用过这个

它会中断浏览器缓存(即,更改浏览器用于标识缓存文件的文件的url,每当查询字符串值更改时,浏览器都会强制重新下载该文件。)

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


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

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

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

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


被接受的答案包含一个奇怪的短语。“它破坏了浏览器缓存”听起来很危险!这没关系,因为事实并非如此。缓存很好。事实上,旧的
?v=124
文件仍然存在!唯一的资源命名方案只会导致无害的缓存未命中

谢谢。我听说过很多关于使用header使缓存过期的事情。如果我部署一个静态站点,我可以看到它的简单性。在什么情况下我会使用标题?标题用于强制浏览器长时间缓存静态资产,本质上与此相反。浏览器不必尊重标题,但它必须尊重查询字符串。我明白了。这项技术在任何地方都有记录吗?我正试图找到一份关于这方面的文件。如果你能找到,那就太好了。还在努力,谢谢。似乎很多人在谷歌“cache js css”后都问过这个问题。是的,这是一个常见的问题,也是一个常见的解决方案。你可能也看到文件名本身被修改为一个唯一的值,例如
js/compiled.min.v125.js
。谢谢你的详细解释。是的,那很有帮助。现在回想起来,当我研究“高性能网站”时,我可能已经看到了他。
<script src="js/compiled.min.js?v=125" async></script>