Http-caching
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ディレクティブは、プライベートキャッシュによって常に無視されます。 |