私は Apache で PHP を実行していますが、サイトの読み込みを高速化するためにサーバー側のキャッシュを実装する方法について混乱しています。
Expires
とヘッダーの違いは何ですか?Last-Modified
またETag
、どの状況でどちらを使用する必要がありますか?
私は Apache で PHP を実行していますが、サイトの読み込みを高速化するためにサーバー側のキャッシュを実装する方法について混乱しています。
Expires
とヘッダーの違いは何ですか?Last-Modified
またETag
、どの状況でどちらを使用する必要がありますか?
Expires
そしてCache-Control
「強力なキャッシングヘッダー」です
Last-Modified
そしてETag
「弱いキャッシングヘッダー」です
最初に、ブラウザExpires/Cache-Control
はサーバーにリクエストを送信するかどうかを確認します。
リクエストを行う必要がある場合Last-Modified/ETag
は、HTTP リクエストを送信します。ドキュメントのEtag
値がそれに一致する場合、サーバーは 200 の代わりに 304 コードを送信し、コンテンツは送信しません。ブラウザはキャッシュからコンテンツをロードします。
強力なキャッシュ ヘッダーの 1 つと、弱いキャッシュ ヘッダーの 1 つを使用することをお勧めします。
以下も参照してください。
Expires
ヘッダーを組み合わせて使用できますが、他の2つには関係ありません。プロキシとブラウザキャッシュによって広くサポートされています。
ETag
とスタンプの違いLast-Modified
はより意味的です。ETagはクライアントに対して不透明です。通常はチェックサムです。一方、Last-Modifiedヘッダーは、クライアントが解釈できます。最後に変更されたタイムスタンプは線形に機能することが理解されています。
ブラウザが。を使用してリソースを要求した場合If-Unmodified-Since
、過去のさまざまなタイムスタンプがそのような条件に一致する可能性があります。ページが頻繁に変更される場合は、最終変更のタイムスタンプが有利な場合があります。
一方、ETagアプローチでは、リソースごとに最後の1つのフィンガープリントを保存するクライアントにつながります。(ブラウザのキャッシュが複数のETagを記憶しているかどうかはわかりません)。リクエストに応じて、1つまたはいくつかの可能なIf-None-Match
トークンのみがリストされます。これは、より多くのミスを意味する可能性があります。また、複数のチェックサムを比較する必要がありますが、Last-Modifiedタイムスタンプを使用すると、算術比較を行うことができます。
ETagの本当の利点は、指紋を確実に比較できることです。最終変更のタイムスタンプは、実際のページコンテンツが変更されたかどうかを確認しないため、もう少しあいまいです。
参照: