Http-caching

提供:Dev Guides
移動先:案内検索

HTTP-キャッシュ

HTTPは通常、応答キャッシュを使用することでパフォーマンスを改善できる分散情報システムに使用されます。 HTTP/1.1プロトコルには、キャッシュを機能させるための要素が多数含まれています。

HTTP/1.1でのキャッシュの目標は、多くの場合にリクエストを送信する必要をなくし、他の多くの場合に完全な応答を送信する必要をなくすことです。

HTTP/1.1の基本的なキャッシュメカニズムは、サーバーが有効期限とバリデーターを指定するキャッシュに対する暗黙のディレクティブです。 この目的のために Cache-Control ヘッダーを使用します。

*Cache-Control* ヘッダーを使用すると、クライアントまたはサーバーは、要求または応答でさまざまなディレクティブを送信できます。 これらのディレクティブは通常、デフォルトのキャッシュアルゴリズムをオーバーライドします。 キャッシングディレクティブは、コンマ区切りリストで指定されます。 例えば:
Cache-control: no-cache

クライアントは、HTTP要求で次のキャッシュ要求ディレクティブを使用できます。

S.N. Cache Request Directive and Description
1

no-cache

キャッシュは、元のサーバーとの再検証が成功しない限り、後続の要求を満たすために応答を使用してはなりません。

2

no-store

キャッシュには、クライアントのリクエストやサーバーの応答に関する情報を保存しないでください。

3

max-age = seconds

クライアントが、指定された秒単位の時間より長くない応答を受け入れることを示します。

4

max-stale [ = seconds ]

有効期限を超えた応答をクライアントが受け入れようとしていることを示します。 秒が指定されている場合、その時間以上に期限切れになってはいけません。

5

min-fresh = seconds

クライアントが、フレッシュネスライフタイムが現在の経過時間に秒単位で指定された時間を足したものよりも小さくない応答を受け入れる意思があることを示します。

6

no-transform

エンティティ本体を変換しません。

7

only-if-cached

新しいデータを取得しません。 キャッシュは、ドキュメントがキャッシュ内にある場合にのみドキュメントを送信でき、新しいコピーが存在するかどうかを確認するために配信元サーバーに接続しないでください。

サーバーは、次のキャッシュ応答ディレクティブをHTTP応答で使用できます。

S.N. Cache Response Directive and Description
1

public

応答が任意のキャッシュによってキャッシュされる可能性があることを示します。

2

private

応答メッセージのすべてまたは一部が単一のユーザー向けであり、共有キャッシュによってキャッシュされてはならないことを示します。

3

no-cache

キャッシュは、元のサーバーで正常に再検証されない限り、後続の要求を満たすために応答を使用してはなりません。

4

no-store

キャッシュには、クライアントのリクエストやサーバーの応答に関する情報を保存しないでください。

5

no-transform

エンティティ本体を変換しません。

6

must-revalidate

キャッシュは、使用する前に古いドキュメントのステータスを確認する必要があり、期限切れのドキュメントは使用しないでください。

7

proxy-revalidate

proxy-revalidateディレクティブは、非共有ユーザーエージェントキャッシュに適用されないことを除いて、must-revalidateディレクティブと同じ意味を持ちます。

8

max-age = seconds

クライアントが、指定された秒単位の時間より長くない応答を受け入れることを示します。

9

s-maxage = seconds

このディレクティブで指定された最大年齢は、max-ageディレクティブまたはExpiresヘッダーで指定された最大年齢を上書きします。 s-maxageディレクティブは、プライベートキャッシュによって常に無視されます。