Aak*_*thy 19 javascript css parameters hyperlink
当我看到很多站点的源代码时,参数被传递给链接文件(CSS/JavaScript).
在Stack Overflow源代码中,我得到了
<script type="text/javascript" src="http://sstatic.net/js/master.js?v=55c7eccb8e19"></script>
Run Code Online (Sandbox Code Playgroud)
为什么master.js?v=55c7eccb8e19
用?
我确信JavaScript/CSS文件无法获取参数.
是什么原因?
T.J*_*der 19
正如其他人所说,它可能是一种控制缓存的尝试,尽管我认为最好通过更改实际资源名称(而foo.v2.js
不是foo.js?v=2
)来改变查询字符串中的版本.(这并不意味着你必须重命名文件,有更好的方法将URL映射到底层文件.)这篇文章虽然已经有四年历史,因此在网络世界中很古老,但仍然是一个非常有用的讨论.在其中,作者声称您不希望对版本使用查询字符串,因为:
......根据HTTP缓存规格的信,用户代理应该永远缓存与查询字符串的URL.虽然Internet Explorer和Firefox忽略了这一点,但Opera和Safari却没有......
这个说法可能不太正确,因为规范实际上说的是
...因为一些应用程序传统上使用带有查询URL的GET和HEAD(在rel_path部分中包含"?")以执行具有显着副作用的操作,缓存不得将对这些URI的响应视为新的,除非服务器提供明确的到期时间 ......
(最后的重点是我的.)因此,只要您还包括显式缓存标头,在查询字符串中使用版本可能没问题.提供的浏览器正确实现上述.代理人也这样做.你知道为什么我认为你在实际资源定位器中的版本更好,而不是查询参数([再次] 并不意味着你必须经常重命名文件;请参阅上面链接的文章了解更多).如果更改名称,您知道沿途的浏览器,代理等将获取更新的资源,这意味着您可以为之前的"名称"提供永无止境的缓存时间,以最大限度地发挥中间缓存的优势.
关于:
我确信Js/CSS文件无法获取参数.
仅仅因为返回的结果是JavaScript或CSS资源,并不意味着它是服务器文件系统上的文字文件.服务器可能正在基于查询字符串参数进行处理并生成自定义的JavaScript或CSS响应.没有理由我无法配置我的服务器将所有.js
文件路由到(比方说)一个PHP处理程序,该处理程序查看查询字符串并返回自定义的内容以匹配给定的字段.因此,如果我设置我的服务器,foo.js?v=2
可能会有所不同foo.js?v=1
.
归档时间: |
|
查看次数: |
11343 次 |
最近记录: |