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


回答:


130

Cache-ControlはHTTP / 1.1で導入され、よりも多くのオプションを提供していますExpires。これらは同じことを行うために使用できますが、のデータ値ExpiresはHTTP日付ですが、Cache-Controlmax-ageでは相対的な時間を指定できるため、「ページがリクエストされてからX時間」を指定できます。

HTMLキャッシュコントロールは非常によく似た質問であり、ほとんどの質問に答えるキャッシングチュートリアルへの良いリンクがあります(例:http://www.mnot.net/cache_docs/#EXPIRES)。ただし、要約するExpiresCache-Control、画像などの静的リソースや、キャッシュの方法をより詳細に制御する必要がある場合に推奨されます。


8
cache-controlはすべてのブラウザーで使用されるものですが、古いプロキシが途中にある場合に備えて両方のヘッダーを指定すると便利です。
ナチョコロマ

3
(上記の回答で参照されているキャッシュに関する記事を書いたMark Nottinghamによる)サービスredbot.orgを使用して、キャッシュヘッダーの正しい使用方法を確認します。
daxim 2013年

35
さらに、「Cache-ControlとExpiresの両方が存在する場合、Cache-Controlが優先されます。」- mnot.net/cache_docs/
KFunk

35

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


22
Apache(およびおそらく多くのサーバー)は通常、ファイルがリクエストされた時間と指定したタイムアウトを使用して有効期限を設定します。この日付は秒を使用しているため、シナリオはほとんどありませんcache-control。動作はと同じです。したがって、使用時にリクエストのピークが発生する理由がわかりませんExpires:
hilnius、2015年

19

このGoogle Developersの記事によれば、HTTPキャッシング

Cache-Controlヘッダーは、HTTP / 1.1仕様の一部として定義され、応答キャッシュポリシーの定義に使用されていた以前のヘッダー(Expiresなど)に取って代わります。最新のブラウザはすべてCache-Controlをサポートしているため、これで十分です。


最新のすべてのブラウザがサポートするだけでなく、仕様にあるようにサポートする必要もあります。「応答にExpiresヘッダーとmax-ageディレクティブの両方が含まれている場合、たとえExpiresヘッダーはより制限的です」[ w3.org/Protocols/rfc2616/rfc2616-sec14.html]
rosell.dk

8

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


4

Heroku devcenterには、この問題に関する優れた記事があります。

それから引用すると、

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


0

CCのプライベート/パブリックオプションを除いて、違いはわかりません。「アクセスプラス1年/月/週/日」のようなExpiresを使用する場合、CCとまったく同じように機能します。


反対票について説明してもらえますか?Chrome、Safari、Firefoxでいくつかの広範なテストを行いました。キャッシュ制御には、有効期限の使用時に使用できないいくつかのオプションがありますが、すべての実用的な目的で、どちらもまったく同じように機能します。
Rob

-1

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


Cache-ControlよりもExpiresを好むのですか?私はオーバーライドを読みましたが、少なくともFirefoxではその逆です。developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Expires
Ecker00

現在、このページには「非推奨。このページはPageSpeed Insights APIのバージョン4向けに書かれており、2019年5月に廃止される予定です。バージョン5は最新であり、Chromeユーザーエクスペリエンスの実際のデータを両方提供しますLighthouseのレポートとラボのデータ。」
Jochem Schulenklopper
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.