web-dev-qa-db-ja.com

ExpiresとCache-Controlヘッダーの違いは何ですか?

ExpiresCache-Controlヘッダーの違いは何ですか?

165
poorani

Cache-ControlはHTTP/1.1で導入され、Expiresよりも多くのオプションを提供します。それらは同じことを達成するために使用できますが、Expiresのデータ値はHTTP日付ですが、Cache-Control max-ageでは相対的な時間を指定できるため、「ページのX時間後に」要求された」。

HTMLキャッシュコントロール は非常によく似た質問であり、ほとんどの質問に答えるべきキャッシュチュートリアルへのリンクがあります(例 http://www.mnot.net/cache_docs/ #EXPIRES )。要約すると、画像やCache-Controlなどの静的リソースでは、キャッシュの実行方法をさらに制御する必要がある場合は、Expiresをお勧めします。

121
A Lee

CDN(クラウド配信ネットワーク)を使用している場合、Cache-Controlを最大エージングタイム(秒)で使用することをお勧めします。たとえば、Cache-Control:max-age = 604800。これにより、オリジンサーバーへのリクエストピークが防止されます。「Expires Wed、30 Oct 20xx 04:37:07 GMT」を使用すると、すべてのブラウザーが同時にリクエストします。

32
user3241258

このGoogle Developersの記事によると、 HTTP Caching

Cache-ControlヘッダーはHTTP/1.1仕様の一部として定義され、応答キャッシュポリシーを定義するために使用される以前のヘッダー(例:Expires)に優先します。最新のブラウザはすべてCache-Controlをサポートしているため、必要なのはそれだけです。

16
Paul

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フィールドを無視する必要があります。

5
nodejh

Heroku devcenterには、このテーマに関する excellent article があります。

それから引用して、

Cache-Controlヘッダーはクライアント側のキャッシュをオンにし、リソースのmax-ageを設定しますが、Expiresヘッダーはリソースが無効になった特定の時点を指定するために使用されます。

4
Devi

あなたがまだ興味があるなら、私はグーグルの男の子から直接この推薦を去ります。 https://developers.google.com/speed/docs/insights/LeverageBrowserCaching 彼らはCache-Controlよりも前にExpiresを好む

0
ray

CCのプライベート/パブリックオプションを除いて、違いは見当たりません。 「access plus 1 year/month/week/day」などのExpiresを使用する場合、CCとまったく同じように機能します。

0
Rob