2016-12-03 16 views
1

我一直在开发一个测试新东西的网站,我需要弄清楚“?v =”的事情。但我不知道它是如何工作的,所以有人可以向我解释这个请哈哈?像如何以及如何运作。HTML链接中的“?v =”是如何工作的?

那么将这个样子,以及如何将服务器上的文件名,这个变化:

<script src="assets/js/moticulous.js"></script> 
<link rel="stylesheet" href="assets/js/platforms.css"/> 

与此相反:

<script src="assets/js/moticulous.js?v=1"></script> 
<link rel="stylesheet" href="assets/js/platforms.css?v=1"/> 
+1

为什么你认为你需要弄明白?就像,你认为它会为你解决什么问题? – Pointy

+0

[通过参数缓存清除]可能的重复(http://stackoverflow.com/questions/9692665/cache-busting-via-params) –

回答

0

用来控制脚本,CSS和图像文件缓存的技术。

浏览器将下载带有?v = 1参数的脚本文件(例如“http://example.com/path/to/script.js?v=1”)并将其缓存到访问者磁盘。下次浏览器访问该页面时,如果URL仍然是“http://example.com/path/to/script.js?v=1”,则会加载缓存的版本。

如果将?v = 1更改为?v = 2,则缓存版本不再有效,因为完整URL不再与浏览器缓存的内容相同。这导致下载并缓存新文件。无论服务器配置或浏览器设置的缓存设置如何,这都会强制最新的更改。

此技术通常与版本号(可能为什么是v =)一起使用,以在软件版本更新时强制新下载js。

在您的后端代码中,您可以用当前软件版本替换= 1部分来使此缓存控制动态化。或者,只要资产发生变化,您就可以增加版本号,但这样做的动态性较差或需要更多工作才能实现。

0

传递虚拟HTTP GET字符串以防止缓存,因为某些浏览器缓存.js和.css文件。通常这样做是为了防止在对.css或.js文件进行更改时,浏览器通过浏览器缓存加载较旧版本的文件。将时间戳值添加到名称(如<文件名>?<时间戳>)比添加版本更受欢迎,因为它会在每次查看页面时强制浏览器下载文件,因为没有两个请求时间具有相同的时间戳。