2016-03-14 185 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和接受語言字段(或缺乏)作爲
決定因素同時爲此響應選擇內容。