2013-04-22 54 views
3

我读这个源代码:这个查询组件在HTML脚本标签中的用途是什么?

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

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

如果你摆脱了整条生产线的CodeMirror部分会自行消失。但是,您可以将数字更改为您想要的任何内容,并且文本框将保留。

那是什么查询?v=125在做什么?

我从来没有见过使用此功能的人。

+0

你可能也看到了文件名用自己独特的值进行修改,如'JS/compiled.min.v125.js'。 – 2013-04-22 23:39:02

回答

7

它打破了浏览器缓存(即改变了浏览器的使用来识别高速缓存文件的文件的URL,迫使浏览器重新下载该文件每当查询字符串值的变化。)

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

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

+0

谢谢。我听到很多关于使用标题过期缓存。如果我正在部署一个静态网站,我可以看到简单性。我会在什么情况下使用标题? – CppLearner 2013-04-22 22:39:00

+0

头部对于强制浏览器长时间缓存静态资产非常有用,本质上与此相反。浏览器不必尊重标题,但它必须尊重查询字符串。 – 2013-04-22 22:40:15

+0

我明白了。这种技术在任何地方都有记录吗我正在尝试查找关于此的文档。如果你能发现它会很棒。仍在尝试。 – CppLearner 2013-04-22 22:42:31

2

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

的难题是:如果用户在缓存我的JavaScript文件,我怎么保证更新的文件把所有用户同时使用?

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

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

+0

感谢您的详细解释。是的,这非常有帮助。现在我想到了,当我学习“高性能网站”时,我可能已经看到他了。 – CppLearner 2013-04-23 05:55:19