web-dev-qa-db-ja.com

Nginxが2つのCache-Controlヘッダーを送信

Iamが静的なコンテンツをngnixで提供しています。

 location/static {
 alias /opt/static/blog/;
 access_log off; 
 etags on; 
 etag_hash on; 
 etag_hash_method md5; 
 expires 1d; 
 add_header Pragma "public"; 
 add_header Cache-Control "public、must-revalidate、proxy-revalidate"; 
 } 

結果のヘッダーは次のようになります。

 Cache-Control:public、must-revalidate、proxy-revalidate 
 Cache-Control:max-age = 86400 
 Connection:close 
 Content-Encoding:gzip 
 Content-Type:application/x-javascript; charset = utf-8 
 Date:Tue、11 Sep 2012 08:39:05 GMT 
 Etag:e2266fb151337fc1996218fafcf3bcee 
 Expires:Wed、12 Sep 2012 08:39:05 GMT 
最終変更日:火、2012年9月11日06:22:41 GMT 
プラグマ:public 
サーバー:nginx/1.2.2 
転送-エンコーディング:チャンク
 Vary:Accept-Encoding 

Nginxが2つのCache-Controlエントリを送信するのはなぜですか?これはクライアントにとって問題になる可能性がありますか?

6
optixx

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

同じフィールド名を持つ複数のメッセージヘッダーフィールドは、そのヘッダーフィールドのフィールド値全体がコンマ区切りのリストとして定義されている場合にのみメッセージに存在する可能性があります[つまり、#(values)]。メッセージのセマンティクスを変更せずに、後続の各フィールド値を最初のフィールド値にコンマで区切って追加することにより、複数のヘッダーフィールドを1つの「フィールド名:フィールド値」ペアに結合できる必要があります。したがって、同じフィールド名を持つヘッダーフィールドが受信される順序は、結合されたフィールド値の解釈にとって重要であり、したがって、プロキシは、メッセージが転送されるときにこれらのフィールド値の順序を変更してはなりません。

5
optixx