2016-03-14 138 views
3

当代理请求具有相同的路径但标头不同时,HTTP代理如何做出使用缓存响应的决定?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则使用了缓存响应。

回答

3

您应该使用缓存版本,除非更改标题出现在由the (optional) Vary response header提供的列表中。

例如,响应包含

Vary: accept-encoding, accept-language 

指示源服务器可能已经使用请求的
Accept-Encoding和接受语言字段(或缺乏)作为
决定因素同时为此响应选择内容。