HTTP-キャッシング
HTTPは通常、応答キャッシュを使用することでパフォーマンスを向上させることができる分散情報システムに使用されます。HTTP / 1.1プロトコルには、キャッシュを機能させることを目的としたいくつかの要素が含まれています。
HTTP / 1.1でのキャッシュの目的は、多くの場合に要求を送信する必要をなくし、他の多くの場合に完全な応答を送信する必要をなくすことです。
HTTP / 1.1の基本的なキャッシュメカニズムは、サーバーが有効期限とバリデーターを指定するキャッシュへの暗黙のディレクティブです。私たちは使用しますCache-Control この目的のためのヘッダー。
ザ・ Cache-Controlヘッダーを使用すると、クライアントまたはサーバーは、要求または応答のいずれかでさまざまなディレクティブを送信できます。これらのディレクティブは通常、デフォルトのキャッシュアルゴリズムをオーバーライドします。キャッシュディレクティブは、コンマ区切りのリストで指定されます。例えば:
Cache-control: no-cache
次のキャッシュ要求ディレクティブは、クライアントがHTTP要求で使用できます。
SN | キャッシュリクエストのディレクティブと説明 |
---|---|
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応答で使用できます。
SN | キャッシュ応答ディレクティブと説明 |
---|---|
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ディレクティブは、プライベートキャッシュによって常に無視されます。 |