0

style.css?v=1234当服务器发送 etag 时,参数化的版本查询,例如css/js 是否是多余的?

4

1 回答 1

1

(这个问题在谷歌中对我来说排名很高,所以我想我会为仍在寻找的人添加一个迟来的答案。)

你是对的。将版本号附加为查询字符串是资源版本控制的最后手段,因为某些代理服务(尤其是 Squid 3 和更早版本)不会缓存带有查询字符串的文件或忽略查询字符串。

人们普遍认为一些较旧的浏览器无法处理带有查询字符串的缓存资源,但我还没有看到这个城市神话得到证实。

当您无法配置服务器标头时,最好在文件名中附加一个版本号,所以不要这样做:

css.css?v=2.0

但改为这样做:

css-2.0.css

当然,如果您能够更改标题,请使用它们!Etag自 90 年代以来一直支持,因此这是资源版本控制的可靠选择。还有Expires,Cache-ControlLast-Modified. 您应该使用为您的应用程序需求量身定制的这些标头的组合(但不是全部)。

对于好的实际示例,我建议阅读更多关于 HTTP 标头和缓存的内容,请访问Google DevelopersYahoo! 开发者网络。毕竟,他们应该知道。

于 2013-12-11T18:58:41.100 回答