Nginx

Nginx 發送 2 個 Cache-Control 標頭

  • September 24, 2019

我正在使用 ngnix 提供我的靜態內容。

位置/靜態{
別名/opt/static/blog/;
access_log 關閉;
上標籤;
etag_hash on;
etag_hash_method md5;
1d 到期;
add_header Pragma "public";
add_header Cache-Control "public, must-revalidate, proxy-revalidate";
}

生成的標頭如下所示:

記憶體控制:公共,必須重新驗證,代理重新驗證
記憶體控制:max-age=86400
連接:關閉
內容編碼:gzip
內容類型:應用程序/x-javascript;字元集=utf-8
日期:2012 年 9 月 11 日星期二 08:39:05 GMT
電子標籤:e2266fb151337fc1996218fafcf3bcee
過期時間:2012 年 9 月 12 日星期三 08:39:05 GMT
最後修改時間:2012 年 9 月 11 日星期二 06:22:41 GMT
語用:public
伺服器:nginx/1.2.2
傳輸編碼:分塊
變化:接受編碼

為什麼 nginx 發送 2 個 Cache-Control 條目,這對客戶端來說可能是個問題嗎?

http://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html#sec4.2

當且僅當該頭欄位的整個欄位值被定義為逗號分隔列表時,具有相同欄位名稱的多個消息頭欄位可能出現在消息中

$$ i.e., #(values) $$. 必須可以將多個頭欄位組合成一個“欄位名稱:欄位值”對,而不改變消息的語義,方法是將每個後續欄位值附加到第一個欄位值,每個欄位值用逗號分隔。因此,接收具有相同欄位名稱的頭欄位的順序對組合欄位值的解釋很重要,因此代理不能在轉發消息時更改這些欄位值的順序。

引用自:https://serverfault.com/questions/426260