Web ページがあり、その中にいくつかの画像などがあります。キャッシュをクリアして URL にアクセスします。ページ要求には、次の応答ヘッダーがあります。
Cache-Control:public, max-age=600
Connection:keep-alive
Content-Encoding:gzip
Content-Language:en
Content-Type:text/html; charset=utf-8
Date:Wed, 21 Nov 2012 07:14:35 GMT
Etag:"1353481170-1"
Expires:Sun, 19 Nov 1978 05:00:00 GMT
Last-Modified:Wed, 21 Nov 2012 06:59:30 +0000
Server:Apache/2.2.3 (CentOS)
Vary:Cookie,Accept-Encoding
画像の 1 つには、次の応答ヘッダーがあります。
Accept-Ranges:none
Cache-Control:max-age=1209600
Connection:keep-alive
Content-Encoding:gzip
Content-Length:2206
Content-Type:text/css
Date:Wed, 21 Nov 2012 07:14:36 GMT
ETag:"6c4f9-89e-4cee5893ab000"
Expires:Wed, 05 Dec 2012 07:14:36 GMT
Last-Modified:Tue, 20 Nov 2012 04:19:12 GMT
Server:Apache/2.2.3 (CentOS)
Vary:Accept-Encoding
同じ URL にもう一度アクセスして、Chrome でコンソールを表示すると、メインのリクエストではブラウザが If-modified-since を送信し、サーバーからプロンプト 304 を取得するのに対し、画像ではブラウザはリクエストを送信せず、キャッシュから提供されます。
私の質問は次のとおりです。
秒数が異なっていても、両方のリソースの最初の応答に max-age ヘッダーと last-modified ヘッダーがある場合、ブラウザーは css/JS/img をテキスト coz とは異なる方法で処理しますか? それから、なぜ一方はまだリクエストを送信し、もう一方は送信しなかったのですか。
優先される max-age ヘッダーと last-modified ヘッダーがある場合は? max-age (AFAIK) の目的は、サーバーへのラウンド トリップを保存することです。HTTP に従って、キャッシュが last-modified ヘッダーを取得した場合、後続のリクエストで常に if-modified-since を送信します。