Cacheable (キャッシュ可能)

キャッシュ可能なレスポンス (応答) とは、キャッシュすることが可能な HTTP レスポンスで、後で取り出して使用するために格納され、サーバーへの新しいリクエスト (要求) を節約します。 すべての HTTP レスポンスがキャッシュされるわけではなく、キャッシュされる HTTP レスポンスには次の制約があります。

  • リクエストで使用されるメソッドは、それ自体がキャッシュ可能です (GET メソッドまたは HEAD メソッド)。 フレッシュネス (新鮮さ) が示され、Content-Location ヘッダーが設定されている場合は、POST または PATCH リクエストへのレスポンスもキャッシュできますが、これはほとんど実装されていません。 (例えば、 Firefox は https://bugzilla.mozilla.org/show_bug.cgi?id=109553 により、それをサポートしていません。) PUTDELETE のような他のメソッドはキャッシュ可能ではなく、その結果をキャッシュすることはできません。
  • レスポンスのステータスコードはアプリケーション キャッシュによって認識され、キャッシュ可能と見なされます。キャッシュ可能なステータスコードは、 200, 203, 204, 206, 300, 301, 404, 405, 410, 414, 501 です。
  • レスポンスには、具体的なヘッダーがあり、たとえば Cache-Control はキャッシュを抑止します。

特定の URI に対するキャッシュ不可能なリクエスト/レスポンスの中には、同じ URI で以前にキャッシュされたレスポンスを無効にするものがあることに注意してください。たとえば、pageX.html への PUT は、同じ URI に対して、キャッシュされたすべての GET リクエストまたは HEAD リクエストを無効化します。

リクエストのメソッドとレスポンスのステータスの両方がキャッシュ可能な場合、リクエストに対するレスポンスをキャッシュすることができます。

GET /pageX.html HTTP/1.1
(…)

200 OK
(…)

PUT リクエストはキャッシュできません。 さらに、HEAD または GET を介して行われた同じ URI へのリクエストに対して、キャッシュされたデータを無効にします。

PUT /pageX.html HTTP/1.1
(…)

200 OK
(…)

レスポンス内の特定の Cache-Control ヘッダーは、キャッシュすることを防止できます。

GET /pageX.html HTTP/1.1
(…)

200 OK
Cache-Control: no-cache
(…)
  1. 一般知識
    1. HTTP 仕様書の cacheable の定義
  2. 技術的な知識
    1. 一般的なキャッシュ可能なメソッドの説明: GET, HEAD
    2. 一般的なキャッシュ不可能なメソッドの説明: PUT, DELETE, often POST