具体而言,URL的哪些部分用于比较。假设我在https://www.example.com/a/b/test.css
提供了一个CSS样式表,其中包含cache-control
,max-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字符串的一部分。此外,这种比较逻辑在浏览器中是否一致,或者是某些标准的一部分?
答案 0 :(得分:5)
RFC 7234 states:
主缓存密钥由请求方法和目标URI组成。
更基本的是,RFC 7230 explains that:
目标URI排除引用的片段组件(如果有), 因为片段标识符是为客户端处理保留的
将这两者放在一起,前两个资源不等效(因为查询是URI的一部分)。最后一个引用与第一个相同的资源。这是标准指定的行为。
但请注意,以前版本的规范stated:
注意:[RFC2616]第13.9节禁止计算缓存 具有查询组件的URI的启发式新鲜度(即那些 包含'?')。在实践中,这还没有广泛 实现。
这表明某些实现不会缓存第二个示例,除非明确告知它是可缓存的。