From eb614dcd66d3903b30dcd5ae2f4f8adf0756c0c7 Mon Sep 17 00:00:00 2001 From: sakito21 Date: Wed, 8 Dec 2021 08:07:27 +0900 Subject: cache-controlの翻訳途中 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- files/ja/web/http/headers/cache-control/index.html | 228 --------------------- files/ja/web/http/headers/cache-control/index.md | 96 +++++++++ 2 files changed, 96 insertions(+), 228 deletions(-) delete mode 100644 files/ja/web/http/headers/cache-control/index.html create mode 100644 files/ja/web/http/headers/cache-control/index.md diff --git a/files/ja/web/http/headers/cache-control/index.html b/files/ja/web/http/headers/cache-control/index.html deleted file mode 100644 index 8b65881a99..0000000000 --- a/files/ja/web/http/headers/cache-control/index.html +++ /dev/null @@ -1,228 +0,0 @@ ---- -title: Cache-Control -slug: Web/HTTP/Headers/Cache-Control -tags: - - Cache-Control - - HTTP - - HTTP ヘッダー - - Reference - - 一般ヘッダー -translation_of: Web/HTTP/Headers/Cache-Control ---- -
{{HTTPSidebar}}
- -

Cache-Control は HTTP のヘッダーで、リクエストとレスポンスの両方でキャッシュのためのディレクティブ (指示) が格納されています。リクエストで指定されたディレクティブは、レスポンスでも同じディレクティブを使用しなければならないということではありません。

- - - - - - - - - - - - - - - - -
ヘッダー種別{{Glossary("General header", "一般ヘッダー")}}
{{Glossary("Forbidden header name", "禁止ヘッダー名")}}いいえ
{{Glossary("CORS-safelisted response header", "CORS セーフリストレスポンスヘッダー")}}はい
- -

構文

- -

キャッシュのディレクティブには、以下のような規則があります。

- - - -

リクエスト時のキャッシュディレクティブ

- -

クライアントからの HTTP リクエストで使用される可能性がある、標準的な Cache-Control ディレクティブです。

- -
Cache-Control: max-age=<seconds>
-Cache-Control: max-stale[=<seconds>]
-Cache-Control: min-fresh=<seconds>
-Cache-Control: no-cache
-Cache-Control: no-store
-Cache-Control: no-transform
-Cache-Control: only-if-cached
-
- -

レスポンス時のキャッシュディレクティブ

- -

サーバーからの HTTP レスポンスで使用される可能性がある、標準的な Cache-Control ディレクティブです。

- -
Cache-Control: must-revalidate
-Cache-Control: no-cache
-Cache-Control: no-store
-Cache-Control: no-transform
-Cache-Control: public
-Cache-Control: private
-Cache-Control: proxy-revalidate
-Cache-Control: max-age=<seconds>
-Cache-Control: s-maxage=<seconds>
-
- -

Cache-Control ディレクティブの拡張

- -

Cache-Control ディレクティブの拡張は、 HTTP キャッシュ標準のコアドキュメントには含まれていません。対応状況については互換性一覧表を確認してください。解釈できないユーザーエージェントはこれらを無視します。

- -
Cache-Control: immutable
-Cache-Control: stale-while-revalidate=<seconds>
-Cache-Control: stale-if-error=<seconds>
-
- -

ディレクティブ

- -

キャッシュ可能性

- -

ブラウザーがレスポンスをキャッシュするのは通常以下の場合です。

- - - -
-
public
-
レスポンスが通常はキャッシュ可能でなくても、レスポンスをどのキャッシュにも格納することができます。
-
private
-
レスポンスが通常はキャッシュ可能でなくても、ブラウザーのキャッシュにのみ格納することができます。レスポンスがどのキャッシュにも保存されないようにするには、代わりに no-store を使用してください。このディレクティブにはレスポンスがキャッシュに保存されないようにする効果はありません。
-
no-cache
-
レスポンスが通常はキャッシュ可能でなくても、レスポンスをどのキャッシュにも格納することができます。しかし、格納されたレスポンスは使用する前に常に元のサーバーとの検証を通さなければならないので、 no-cacheimmutable と組み合わせて使用することはできません。レスポンスがどのキャッシュにも保存されないようにするには、代わりに no-store を使用してください。このディレクティブにはレスポンスがキャッシュに保存されないようにする効果はありません。
-
no-store
-
レスポンスをキャッシュに保存することはできません。他のディレクティブを設定することもできますが、最近のブラウザーではレスポンスがキャッシュされることを防ぐために必要なディレクティブはこれだけです。 max-age=0 が暗黙で含まれますmust-revalidate は意味を持ちません。再検証を行うにはレスポンスがキャッシュに格納されている必要がありますが、 no-store はこれを抑止するからです。
-
- -

有効期限

- -
-
max-age=<seconds>
-
リソースが新しいとみなされる最長の時間です。 Expires とは異なり、このディレクティブはリクエスト時刻からの相対時間です。
-
s-maxage=<seconds>
-
max-age または Expires ヘッダーを上書きしますが、共有キャッシュ (プロキシなど) だけのためのものです。プライベートキャッシュでは無視されます。
-
max-stale[=<seconds>]
-
クライアントが古くなったレスポンスを受け入れることを示します。オプションの値は秒単位で、クライアントが受け入れる古さの上限を示します。
-
min-fresh=<seconds>
-
クライアントが、少なくとも指定された秒数の間は新しいままのレスポンスを要求していることを示します。
-
stale-while-revalidate=<seconds> {{Experimental_Inline}}
-
クライアントが古いレスポンスを受け入れ、新しいレスポンスをバックグラウンドで非同期にチェックすることを示します。 seconds の値は、クライアントが古いレスポンスを受け入れる時間を示します。詳細については、「Keeping things fresh with stale-while-revalidate」を参照してください。
-
stale-if-error=<seconds> {{Experimental_Inline}}
-
新しいレスポンスのチェックに失敗した場合に、クライアントが古いレスポンスを受け入れることを示します。 seconds の値は、当初の有効期限が切れた後に、クライアントが古いレスポンスを受け入れる時間を示します。
-
- -

再検証と再読み込み

- -
-
must-revalidate
-
一度リソースが古くなると、キャッシュは元のサーバーでの検証が成功しない限り、古くなったコピーを使用してはならないことを示します。
-
proxy-revalidate
-
must-revalidate と似ていますが、共有キャッシュ (プロキシなど) にのみ適用されます。プライベートキャッシュでは無視されます。
-
immutable
-
時間が経ってもレスポンスの本文が変化しないことを示します。リソースは、期限切れでない限り、サーバー上で変化していないため、クライアントは、たとえユーザーが明示的にページを更新した場合でも、更新をチェックするために条件付きの再検証 (If-None-MatchIf-Modified-Since など) を送ってはいけません。この拡張機能を実装していないクライアントは、 HTTP の仕様に従ってこれらの拡張機能を無視しなければなりません。 Firefox では、 immutablehttps:// トランザクションでのみ有効です。詳しくは、こちらのブログ記事を参照してください。
-
- -

その他

- -
-
no-transform
-
中間キャッシュやプロキシが、レスポンスの本文、 {{HTTPHeader("Content-Encoding")}}, {{HTTPHeader("Content-Range")}}, {{HTTPHeader("Content-Type")}} を変更してはいけません。したがって、 Google’s Web Light のようなプロキシやブラウザーの機能を使用して、キャッシュの格納や遅いコネクションにおいてデータを最小化するために画像を変換してはいけません。
-
only-if-cached
-
クライアントによって設定され、レスポンスのために「ネットワークを使用しない」ことを示します。キャッシュは、保存されたレスポンスを使用して応答するか、 {{HTTPStatus("504")}} ステータスコードで応答する必要があります。 If-None-Match などの条件付きヘッダーは設定すべきではありません。サーバーがレスポンスの一部として only-if-cached を設定しても効果はありません。
-
- -

- -

キャッシュの防止

- -

リソースのキャッシュを無効にするには、以下のレスポンスヘッダーを送ることができます。

- -
-
良い例:
-
-
Cache-Control: no-store
- -
-

 no-store ディレクティブは、新しいリソースがキャッシュされることを防ぎますが、過去のリクエストの結果としてキャッシュ済みの古いリソースが応答するのを防ぐことはできません。 max-age=0 を設定すると、キャッシュが強制的に再検証されます(キャッシュがクリアされます)。

- -
Cache-Control: no-store, max-age=0
-
-
-
-
悪い例:
-
-
Cache-Control: private,no-cache,no-store,max-age=0,must-revalidate,pre-check=0,post-check=0
-
-
- -

静的な資産のキャッシュ

- -

変更されないアプリケーション内のファイルについては、通常、以下のレスポンスヘッダーを送信することで積極的にキャッシュを行うことができます。これには、例えば画像、 CSS ファイル、 JavaScript ファイルなど、アプリケーションによって提供される静的なファイルが含まれます。加えて、 {{HTTPHeader("Expires")}} ヘッダーも参照してください。

- -
Cache-Control: public, max-age=604800, immutable
-
- -

再検証の要求

- -

no-cache または max-age=0 を指定すると、クライアントはリソースをキャッシュすることができ、それを使用する前に毎回再検証をしなければならないことを示します。これは、 HTTP リクエストが毎回発生することを意味しますが、コンテンツが有効であれば、 HTTP 本文のダウンロードを飛ばすことができます。

- -
Cache-Control: no-cache
-Cache-Control: no-cache, max-age=0
-
- -

仕様書

- - - - - - - - - - - - - - - - - - - - - - - - - - -
仕様書状態備考
{{RFC(8246, "HTTP Immutable Responses")}}IETF RFC
{{RFC(7234, "Hypertext Transfer Protocol (HTTP/1.1): Caching")}}IETF RFC
{{RFC(5861, "HTTP Cache-Control Extensions for Stale Content")}}IETF RFC初回定義
- -

ブラウザーの互換性

- -

{{Compat("http.headers.Cache-Control")}}

- -

関連情報

- - diff --git a/files/ja/web/http/headers/cache-control/index.md b/files/ja/web/http/headers/cache-control/index.md new file mode 100644 index 0000000000..04f7d059a2 --- /dev/null +++ b/files/ja/web/http/headers/cache-control/index.md @@ -0,0 +1,96 @@ +--- +title: Cache-Control +slug: Web/HTTP/Headers/Cache-Control +tags: + - Cache-Control + - HTTP + - HTTP Header + - Request header + - Response header + - Reference +translation_of: Web/HTTP/Headers/Cache-Control +--- + +{{HTTPSidebar}} + + +HTTPヘッダーフィールドの **`Cache-Control`** には、ブラウザや共有キャッシュ(Proxy, CDN など)の[caching](/en-US/docs/Web/HTTP/Caching)を制御するためのdirective(指示)が、リクエストとレスポンスの両方に含まれています。 + + + + + + + + + + + + + + + + +
Header type + {{Glossary("Request header")}}, + {{Glossary("Response header")}} +
{{Glossary("Forbidden header name")}}no
+ {{Glossary("CORS-safelisted response header")}} + yes
+ +## 構文 + +Cache の directive には、以下のような規則があります。 + +- 大文字と小文字は区別されませんが、実装によっては大文字のディレクティブを認識しないものもあるので、小文字を推奨します。 +- 複数のディレクティブはカンマで区切ります。 +- いくつかのディレクティブにはオプションの引数があります。 + +### Cache directives + +標準的な `Cache-Control` directives は以下のように定義されています。 + +| Request | Response | +| :--------------- | :----------------------- | +| `max-age` | `max-age` | +| `max-stale` | - | +| `min-fresh` | - | +| - | `s-maxage` | +| `no-cache` | `no-cache` | +| `no-store` | `no-store` | +| `no-transform` | `no-transform` | +| `only-if-cached` | - | +| - | `must-revalidate` | +| - | `proxy-revalidate` | +| - | `must-understand` | +| - | `private` | +| - | `public` | +| - | `immutable` | +| - | `stale-while-revalidate` | +| `stale-if-error` | `stale-if-error` | + +注意: [compatibility table](#browser_compatibility) でサポートされているかを確認してください。解釈できないユーザーエージェントはこれらを無視します。 + +## 用語集 + +このドキュメントでは、次の用語が使用されています。すべてではありませんが、仕様書に基づいています。 + +- `(HTTP) cache` + - : リクエストとレスポンスを保持し、次のリクエストで再利用するための実装。Shared cache または Private cache のいずれかです。 +- `Shared cache` + - : オリジンサーバーとクライアントの間に存在する cache (Proxy, CDN など)。1 つのレスポンスを保存し、それを複数のユーザーで再利用します。したがって、開発者は Shared cache にパーソナライズされたコンテンツをcacheとして保存することは避けるべきです。 +- `Private cache` + - : クライアント内に存在する cache です。_local cache_ 、あるいは単に _browser cache_ などとも呼ばれます。ユーザーのためにパーソナライズされたコンテンツを保存し、再利用することができます。 +- `Store response` + - : cache 可能な場合には、レスポンスを cache に保存します。しかし、そのまま再利用されるとは限りません。(通常、"cache" はレスポンスを保存することを意味します。) +- `Reuse response` + - : cache されたレスポンスを次のリクエストに再利用します。 +- `Revalidate response` + - : オリジンサーバーに、保存されているレスポンスがまだ新しいか確認します。通常は条件付きのリクエストで行います。 +- `Fresh response` + - : レスポンスが新しい状態であることを示します。これは通常、リクエストの指示に応じて、レスポンスを後続のリクエストに再利用できることを意味します。 +- `Stale response` + - : レスポンスが古い状態になっていることを示します。これは通常、レスポンスがそのままでは再利用できないことを意味します。Cache storage は古いレスポンスをすぐに削除する必要はありません。なぜなら、再検証によってレスポンスが古いものから再び新しい状態に変わる可能性があるからです。 +- `Age` + - : レスポンスが生成されてからの時間です。レスポンスが新しい状態か古い状態かの基準となる。 + -- cgit v1.2.3-54-g00ecf