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