HTTPでのキャッシュ

HTTPプロトコルを介して利用可能なキャッシュオプションの詳細な説明

キャッシングは、転送する必要のあるものが少ないほど良いため、ネットワーク接続を高速化するのに役立つ手法です。

多くのリソースは非常に大きくなる可能性があり、時間と実際のコスト(モバイルなど)の点で非常に高価になります。

HTTPによって利用可能になり、ブラウザーによって使用されるさまざまなキャッシュ戦略があります。

キャッシュなし

まず、Cache-Controlヘッダーは、最初にETag値をチェックせずに(これについては後で詳しく説明します)、キャッシュされたバージョンのリソースを使用しないようにブラウザーに指示できます。no-cache値:

Cache-Control: no-cache

より制限的なno-storeオプションは、ブラウザ(およびすべての中間ネットワークデバイス)にリソースをキャッシュに保存しないように指示します。

Cache-Control: no-store

場合Cache-Control持っているmax-age値。これは、このリソースがキャッシュとして有効である秒数を決定するために使用されます。

Cache-Control: max-age=3600

ザ・Expiresヘッダ

HTTPリクエストが送信されると、ブラウザは、必要なURLに基づいて、キャッシュにそのページのコピーがあるかどうかを確認します。

ある場合は、ページをチェックして鮮度

ページが新鮮な場合HTTP応答Expiresヘッダ値が現在の日時よりも小さい。

Expiresヘッダーは次の形式を取ります。

Expires: Sat, 01 Dec 2018 16:00:00 GMT

条件付きGET

条件付き取得を実行するには、さまざまな方法があります。すべては使用に基づいていますIf-*リクエストヘッダー:

  • を使用してIf-Modified-SinceそしてLast-Modified
  • を使用してIf-None-MatchそしてETag

使用するIf-Modified-SinceそしてLast-Modified

ブラウザはサーバーにリクエストを送信でき、ページを要求するだけでなく、If-Modified-Sinceヘッダ、 に基づくLast-Modified現在キャッシュされているページから取得したヘッダー値。

これは、リソースがその日付以降に更新された場合にのみ応答本文(ページコンテンツ)を返すようにサーバーに指示します。

それ以外の場合、サーバーは304 Not Modified応答。

使用するIf-None-MatchそしてETag

Webサーバー(セットアップ、ページの提供方法などによって異なります)は、ETagヘッダー

これはリソースの識別子です。リソースが更新されるなど、リソースが変更されるたびに、ETagも変更される必要があります。

それはチェックサムのようなものです。

ブラウザはIf-None-Matchヘッダ1つ(または複数)のETag値が含まれています。

一致するものがない場合、サーバーはリソースの新しいバージョンを返します。一致しない場合は、304 Not Modified応答。


その他のネットワークチュートリアル: