Expires
とCache-Control
ヘッダーの違いは何ですか?
Cache-Control
はHTTP/1.1で導入され、Expires
よりも多くのオプションを提供します。それらは同じことを達成するために使用できますが、Expires
のデータ値はHTTP日付ですが、Cache-Control
max-ageでは相対的な時間を指定できるため、「ページのX時間後に」要求された」。
HTMLキャッシュコントロール は非常によく似た質問であり、ほとんどの質問に答えるべきキャッシュチュートリアルへのリンクがあります(例 http://www.mnot.net/cache_docs/ #EXPIRES )。要約すると、画像やCache-Control
などの静的リソースでは、キャッシュの実行方法をさらに制御する必要がある場合は、Expires
をお勧めします。
CDN(クラウド配信ネットワーク)を使用している場合、Cache-Controlを最大エージングタイム(秒)で使用することをお勧めします。たとえば、Cache-Control:max-age = 604800。これにより、オリジンサーバーへのリクエストピークが防止されます。「Expires Wed、30 Oct 20xx 04:37:07 GMT」を使用すると、すべてのブラウザーが同時にリクエストします。
このGoogle Developersの記事によると、 HTTP Caching :
Cache-ControlヘッダーはHTTP/1.1仕様の一部として定義され、応答キャッシュポリシーを定義するために使用される以前のヘッダー(例:Expires)に優先します。最新のブラウザはすべてCache-Controlをサポートしているため、必要なのはそれだけです。
Cache-ControlはHTTP/1.1で定義され、サーバーからクライアントへのすべてのキャッシュメカニズムに、このオブジェクトをキャッシュできるかどうかを伝えます。秒単位で測定されます:Cache-Control: max-age=3600
。
Expires
ヘッダーフィールドは、応答が古くなったと見なされる日時を示します。 Expires値は、HTTP日付のタイムスタンプExpires: Tue, 18 Jul 2017 16:07:23 GMT
です。
応答にCache-Control
ディレクティブを持つmax-age
フィールドが含まれる場合、受信者はExpires
フィールドを無視する必要があります。
Heroku devcenterには、このテーマに関する excellent article があります。
それから引用して、
Cache-Controlヘッダーはクライアント側のキャッシュをオンにし、リソースのmax-ageを設定しますが、Expiresヘッダーはリソースが無効になった特定の時点を指定するために使用されます。
あなたがまだ興味があるなら、私はグーグルの男の子から直接この推薦を去ります。 https://developers.google.com/speed/docs/insights/LeverageBrowserCaching 彼らはCache-Controlよりも前にExpiresを好む
CCのプライベート/パブリックオプションを除いて、違いは見当たりません。 「access plus 1 year/month/week/day」などのExpiresを使用する場合、CCとまったく同じように機能します。