浏览器如何比较缓存的URL?

时间:2015-10-18 23:42:33

标签: caching browser cross-browser browser-cache cache-control

具体而言,URL的哪些部分用于比较。假设我在https://www.example.com/a/b/test.css提供了一个CSS样式表,其中包含cache-controlmax-age等的相应HTTP标头。当用户稍后转到以下每个网址时,哪些网址将提供给缓存文件?

https://www.example.com/a/b/test.css
https://www.example.com/a/b/test.css?abc=123
https://www.example.com/a/b/test.css#abc=124

基本上,我要问的是"搜索"和"哈希"当浏览器决定是否使用缓存资源时,会比较URL字符串的一部分。此外,这种比较逻辑在浏览器中是否一致,或者是某些标准的一部分?

1 个答案:

答案 0 :(得分:5)

RFC 7234 states

  

主缓存密钥由请求方法和目标URI组成。

更基本的是,RFC 7230 explains that

  

目标URI排除引用的片段组件(如果有),      因为片段标识符是为客户端处理保留的

将这两者放在一起,前两个资源等效(因为查询是URI的一部分)。最后一个引用与第一个相同的资源。这是标准指定的行为。

但请注意,以前版本的规范stated

  

注意:[RFC2616]第13.9节禁止计算缓存         具有查询组件的URI的启发式新鲜度(即那些         包含'?')。在实践中,这还没有广泛         实现。

这表明某些实现不会缓存第二个示例,除非明确告知它是可缓存的。