当请求具有相同路径但标题不同时,HTTP代理应如何决定是否使用缓存响应?
以此HTTP请求/响应为例:
GET /resource HTTP/1.1
Host: example.org
X-Filter: foo=bar
HTTP/1.1 200 OK
Cache-Control: max-age=3600
Content-Type: application/json
Content-Length: 13
{"foo":"bar"}
代理是否应该认为响应对于具有不同X-Filter
标头的第二个请求有效?例如:
GET /resource HTTP/1.1
Host: example.org
X-Filter: foo=baz
然后在第一个请求的一个小时内,代理是否应该请求新的响应,因为请求标头不同,或者应该使用第一个请求的缓存响应,忽略标头?
我之所以这样问,是因为我注意到Google Chrome发出了新请求,而Microsoft Edge却使用了缓存响应。
答案 0 :(得分:4)
您应该使用缓存版本,除非the (optional) Vary
response header提供的列表中显示更改的标题。
例如,包含
的响应Vary: accept-encoding, accept-language
表示源服务器可能已使用请求的
Accept-Encoding和Accept-Language字段(或缺少字段)为
在选择此响应的内容时确定因素。