2. Overview of Cache Operation (キャッシュ操作の概要)
適切なキャッシュ操作は、キャッシュに既に保持されている情報の送信を削減しながら、HTTP転送のセマンティクスを保持します。HTTPの一般的な用語とコアコンセプトについては、[HTTP]のセクション3を参照してください。
キャッシングはHTTPの完全に任意の (OPTIONAL) 機能ですが、キャッシュされた応答を再利用することが望ましいと想定でき、それを妨げる要件やローカル設定がない場合、これがデフォルトの動作です。したがって、HTTPキャッシュ要件の焦点は、キャッシュが常に特定の応答を保存および再利用することを義務付けるのではなく、キャッシュが再利用不可能な応答を保存したり、保存された応答を不適切に再利用したりすることを防ぐことにあります。
「キャッシュキー (Cache Key)」は、キャッシュが応答を選択するために使用する情報であり、少なくとも保存された応答を取得するために使用されたリクエストメソッド (Request Method) とターゲットURI (Target URI) で構成されます。メソッドは、その応答が後続のリクエストを満たすために使用できる状況を決定します。ただし、今日一般的に使用されている多くのHTTPキャッシュは、GET応答のみをキャッシュするため、URIのみをキャッシュキーとして使用します。
コンテンツネゴシエーション (Content Negotiation) の対象となるリクエストターゲットの場合、キャッシュは複数の応答を保存する可能性があります。キャッシュは、セクション4.1で説明されているように、Vary応答ヘッダーフィールドからの情報を使用して、元のリクエストの一部のヘッダーフィールドもキャッシュキーに組み込むことで、これらの応答を区別します。
キャッシュは、追加の情報をキャッシュキーに組み込む可能性があります。たとえば、ユーザーエージェントキャッシュは、特定のプライバシーリスクを回避するために、参照サイトのアイデンティティを含めることで、キャッシュを「二重キー化 (Double Keying)」する可能性があります(セクション7.2を参照)。
最も一般的には、キャッシュは取得リクエストの成功結果を保存します。つまり、ターゲットリソースの表現 (Representation) を含むGETリクエストに対する200 (OK) 応答です([HTTP]のセクション9.3.1を参照)。ただし、メソッドの定義がそのようなキャッシングを許可し、キャッシュキーとして使用するのに適した何かを定義している場合、リダイレクト、否定的な結果(404 (Not Found) など)、不完全な結果(206 (Partial Content) など)、およびGET以外のメソッドへの応答を保存することも可能です。
キャッシュがオリジンサーバー (Origin Server) に接続できない場合、またはリクエストの転送パスを見つけられない場合、キャッシュは「切断 (Disconnected)」状態にあります。一部の状況では、切断されたキャッシュは古い応答 (Stale Responses) を提供できます(セクション4.2.4)。