在ajax.js或filename.js?ver = 3.1.2结束时ver = 3.1.2是什么意思?

时间:2011-08-31 07:56:14

标签: javascript jquery

我在网站上遇到了一些有冲突的jquery问题,当我试图解决这个问题时,我注意到我的头文件中有以下后缀:

ajax.js?ver=3.1.2'></script> 
jquery.prettyPhoto.js?ver=3.1.2'></script> 
jquery.cycle.all.2.72.js?ver=3.1.2'></script> 
jcarousellite_1.0.1.min.js?ver=3.1.2'></script> 
jquery.kwicks-1.5.1.pack.js?ver=3.1.2'></script> 
ddsmoothmenu.js?ver=3.1.2'></script> 
js.js?ver=3.1.2'></script> 

显然3.1.2可能是某种类型的“最新更新”或类似内容。它是如何工作的?你如何同步主题或平衡它们?

由于混合版本,这些其他文件会失败吗?其余部分:

.css?ver=20110325' type='text/css' media='all' /> 
.css?ver=3.1.2' type='text/css' media='all' /> 
l10n.js?ver=20101110'></script> 
jquery.js?ver=1.4.2'></script> 
all.js?ver=3.1.2#xfbml=1'></script> 
comment-reply.js?ver=20090102'></script> 

不确定这是否应该在Stackoverflow上发布,所以请随意编辑。

2 个答案:

答案 0 :(得分:4)

我们的想法是,js文件将在未来的expires标题中提供,因此指示浏览器不再下载该文件。

要允许更改文件,同时仍然缓存它们,通常会添加此缓存清除查询字符串,以便您可以更改ver位并且浏览器认为它是新文件。

它实际上并没有对服务器端做任何事情,这只是一种巧妙的方式。

这实际上是一种非常糟糕的方式,因为一些代理服务器不会使用查询字符串缓存内容,因此更好的方法是将某些内容嵌入到文件名中,而不是查询字符串。

答案 1 :(得分:1)

3.1.2似乎是您正在处理的应用程序的版本,而不是js / css库本身的版本。做这样的事情的一个原因是,当您更新代码时,您不必担心浏览器使用较旧的缓存版本。