diff options
author | sakito21 <sakito21@gmail.com> | 2021-12-08 08:07:27 +0900 |
---|---|---|
committer | Masahiro FUJIMOTO <mfujimot@gmail.com> | 2022-02-20 00:15:47 +0900 |
commit | eb614dcd66d3903b30dcd5ae2f4f8adf0756c0c7 (patch) | |
tree | 327159f74e5a9a549491df2dc049fe4a39142e14 | |
parent | 5e61f18c970f256815c1da2e004b2f3fd2e4aa1e (diff) | |
download | translated-content-eb614dcd66d3903b30dcd5ae2f4f8adf0756c0c7.tar.gz translated-content-eb614dcd66d3903b30dcd5ae2f4f8adf0756c0c7.tar.bz2 translated-content-eb614dcd66d3903b30dcd5ae2f4f8adf0756c0c7.zip |
cache-controlの翻訳途中
-rw-r--r-- | files/ja/web/http/headers/cache-control/index.html | 228 | ||||
-rw-r--r-- | files/ja/web/http/headers/cache-control/index.md | 96 |
2 files changed, 96 insertions, 228 deletions
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 ---- -<div>{{HTTPSidebar}}</div> - -<p><span class="seoSummary"><strong><code>Cache-Control</code></strong> は HTTP のヘッダーで、リクエストとレスポンスの両方で<a href="/ja/docs/Web/HTTP/Caching">キャッシュ</a>のための<em>ディレクティブ</em> (指示) が格納されています。リクエストで指定されたディレクティブは、レスポンスでも同じディレクティブを使用しなければならないということではありません。</span></p> - -<table class="properties"> - <tbody> - <tr> - <th scope="row">ヘッダー種別</th> - <td>{{Glossary("General header", "一般ヘッダー")}}</td> - </tr> - <tr> - <th scope="row">{{Glossary("Forbidden header name", "禁止ヘッダー名")}}</th> - <td>いいえ</td> - </tr> - <tr> - <th scope="row">{{Glossary("CORS-safelisted response header", "CORS セーフリストレスポンスヘッダー")}}</th> - <td>はい</td> - </tr> - </tbody> -</table> - -<h2 id="Syntax" name="Syntax">構文</h2> - -<p>キャッシュのディレクティブには、以下のような規則があります。</p> - -<ul> - <li>大文字小文字の区別はありませんが、小文字が推奨されています。</li> - <li>複数のディレクティブはカンマで区切ります。</li> - <li>ディレクティブによってはオプションの引数があり、<em>トークン</em>または <em>quoted-string</em> のどちらかで指定します。 (定義については仕様書を参照)</li> -</ul> - -<h3 id="Cache_request_directives" name="Cache_request_directives">リクエスト時のキャッシュディレクティブ</h3> - -<p>クライアントからの HTTP リクエストで使用される可能性がある、標準的な <code>Cache-Control</code> ディレクティブです。</p> - -<pre class="syntaxbox notranslate">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 -</pre> - -<h3 id="Cache_response_directives" name="Cache_response_directives">レスポンス時のキャッシュディレクティブ</h3> - -<p>サーバーからの HTTP レスポンスで使用される可能性がある、標準的な <code>Cache-Control</code> ディレクティブです。</p> - -<pre class="syntaxbox notranslate">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> -</pre> - -<h3 id="Extension_Cache-Control_directives" name="Extension_Cache-Control_directives">Cache-Control ディレクティブの拡張</h3> - -<p><code>Cache-Control</code> ディレクティブの拡張は、 HTTP キャッシュ標準のコアドキュメントには含まれていません。対応状況については<a href="#Browser_compatibility">互換性一覧表</a>を確認してください。解釈できないユーザーエージェントはこれらを無視します。</p> - -<pre class="syntaxbox notranslate">Cache-Control: immutable -Cache-Control: stale-while-revalidate=<seconds> -Cache-Control: stale-if-error=<seconds> -</pre> - -<h2 id="Directives" name="Directives">ディレクティブ</h2> - -<h3 id="Cacheability" name="Cacheability">キャッシュ可能性</h3> - -<p>ブラウザーがレスポンスをキャッシュするのは通常以下の場合です。</p> - -<ul> - <li>ステータスコードが {{HTTPStatus("301")}}, {{HTTPStatus("302")}}, {{HTTPStatus("307")}}, {{HTTPStatus("308")}}, {{HTTPStatus("410")}} の何れかで、<strong>かつ</strong></li> - <li><code>Cache-Control</code> に <code>no-store</code> がないか、 もし<em>プロキシの場合は</em> <code>private</code> がなく、 <strong>かつ</strong></li> - <li>{{HTTPHeader("Authorization")}} が設定されていない</li> - <li>以下の何れかに該当する場合 - <ul> - <li>ステータスコードが {{HTTPStatus("301")}}, {{HTTPStatus("302")}}, {{HTTPStatus("307")}}, {{HTTPStatus("308")}}, {{HTTPStatus("410")}} の何れか、<strong>または</strong></li> - <li><code>public</code>, <code>max-age</code> <code>s-maxage</code> の何れかが <code>Cache-Control</code> に指定されている、<strong>または</strong></li> - <li>{{HTTPHeader("Expires")}} が設定されている</li> - </ul> - </li> -</ul> - -<dl> - <dt><code>public</code></dt> - <dd>レスポンスが通常はキャッシュ可能でなくても、レスポンスを<em>どの</em>キャッシュにも格納することができます。</dd> - <dt><code>private</code></dt> - <dd>レスポンスが通常はキャッシュ可能でなくても、<em>ブラウザーの</em>キャッシュにのみ格納することができます。<strong>レスポンスがどのキャッシュにも保存されないようにするには、代わりに <code>no-store</code> を使用してください。</strong><em>このディレクティブにはレスポンスがキャッシュに保存されないようにする効果はありません。</em></dd> - <dt><code>no-cache</code></dt> - <dd>レスポンスが通常はキャッシュ可能でなくても、レスポンスを<em>どの</em>キャッシュにも格納することができます。しかし、格納されたレスポンスは使用する前に<em>常に</em>元のサーバーとの検証を通さなければならないので、 <code>no-cache</code> を <code>immutable</code> と組み合わせて使用することはできません。<strong>レスポンスがどのキャッシュにも保存されないようにするには、代わりに <code>no-store</code> を使用してください。</strong><em>このディレクティブにはレスポンスがキャッシュに保存されないようにする効果はありません。</em></dd> - <dt><code>no-store</code></dt> - <dd>レスポンスをキャッシュに保存することは<strong>できません</strong>。他のディレクティブを設定することもできますが、最近のブラウザーでは<em>レスポンスがキャッシュされることを防ぐために必要なディレクティブはこれだけ</em>です。 <code>max-age=0</code> <strong>が暗黙で含まれます</strong>。 <code>must-revalidate</code> <strong>は意味を持ちません</strong>。再検証を行うにはレスポンスがキャッシュに格納されている必要がありますが、 <code>no-store</code> はこれを抑止するからです。</dd> -</dl> - -<h3 id="Expiration" name="Expiration">有効期限</h3> - -<dl> - <dt><code>max-age=<seconds></code></dt> - <dd>リソースが新しいとみなされる最長の時間です。 <code>Expires</code> とは異なり、このディレクティブはリクエスト時刻からの相対時間です。</dd> - <dt><code>s-maxage=<seconds></code></dt> - <dd><code>max-age</code> または <code>Expires</code> ヘッダーを上書きしますが、共有キャッシュ (プロキシなど) だけのためのものです。プライベートキャッシュでは無視されます。</dd> - <dt><code>max-stale[=<seconds>]</code></dt> - <dd>クライアントが古くなったレスポンスを受け入れることを示します。オプションの値は秒単位で、クライアントが受け入れる古さの上限を示します。</dd> - <dt><code>min-fresh=<seconds></code></dt> - <dd>クライアントが、<em>少なくとも</em>指定された秒数の間は新しいままのレスポンスを要求していることを示します。</dd> - <dt><code>stale-while-revalidate=<seconds></code> {{Experimental_Inline}}</dt> - <dd>クライアントが古いレスポンスを受け入れ、新しいレスポンスをバックグラウンドで非同期にチェックすることを示します。 <em>seconds</em> の値は、クライアントが古いレスポンスを受け入れる時間を示します。詳細については、「<a href="https://web.dev/stale-while-revalidate">Keeping things fresh with <code>stale-while-revalidate</code></a>」を参照してください。</dd> - <dt><code>stale-if-error=<seconds></code> {{Experimental_Inline}}</dt> - <dd>新しいレスポンスのチェックに失敗した場合に、クライアントが古いレスポンスを受け入れることを示します。 <em>seconds</em> の値は、当初の有効期限が切れた後に、クライアントが古いレスポンスを受け入れる時間を示します。</dd> -</dl> - -<h3 id="Revalidation_and_reloading" name="Revalidation_and_reloading">再検証と再読み込み</h3> - -<dl> - <dt><code>must-revalidate</code></dt> - <dd>一度リソースが古くなると、キャッシュは元のサーバーでの<a href="/ja/docs/Web/HTTP/Caching#Cache_validation">検証</a>が成功しない限り、古くなったコピーを使用してはならないことを示します。</dd> - <dt><code>proxy-revalidate</code></dt> - <dd><code>must-revalidate</code> と似ていますが、共有キャッシュ (プロキシなど) にのみ適用されます。プライベートキャッシュでは無視されます。</dd> - <dt><code>immutable</code></dt> - <dd>時間が経ってもレスポンスの本文が<strong>変化しない</strong>ことを示します。リソースは、<em>期限切れでない限り</em>、サーバー上で変化していないため、クライアントは、たとえユーザーが明示的にページを更新した場合でも、更新をチェックするために条件付きの再検証 (<code>If-None-Match</code> や <code>If-Modified-Since</code> など) を送ってはいけません。この拡張機能を実装していないクライアントは、 HTTP の仕様に従ってこれらの拡張機能を無視しなければなりません。 Firefox では、 <code>immutable</code> は <code>https://</code> トランザクションでのみ有効です。詳しくは、こちらの<a href="https://bitsup.blogspot.de/2016/05/cache-control-immutable.html">ブログ記事</a>を参照してください。</dd> -</dl> - -<h3 id="Other" name="Other">その他</h3> - -<dl> - <dt><code>no-transform</code></dt> - <dd>中間キャッシュやプロキシが、レスポンスの本文、 {{HTTPHeader("Content-Encoding")}}, {{HTTPHeader("Content-Range")}}, {{HTTPHeader("Content-Type")}} を変更してはいけません。したがって、 <a href="https://support.google.com/webmasters/answer/6211428">Google’s Web Light</a> のようなプロキシやブラウザーの機能を使用して、キャッシュの格納や遅いコネクションにおいてデータを最小化するために画像を変換してはいけません。</dd> - <dt><code>only-if-cached</code></dt> - <dd><em>クライアント</em>によって設定され、レスポンスのために「ネットワークを使用しない」ことを示します。キャッシュは、保存されたレスポンスを使用して応答するか、 {{HTTPStatus("504")}} ステータスコードで応答する必要があります。 <code>If-None-Match</code> などの条件付きヘッダーは設定すべきではありません。サーバーがレスポンスの一部として <code>only-if-cached</code> を設定しても効果はありません。</dd> -</dl> - -<h2 id="Examples" name="Examples">例</h2> - -<h3 id="Preventing_caching" name="Preventing_caching">キャッシュの防止</h3> - -<p>リソースのキャッシュを無効にするには、以下のレスポンスヘッダーを送ることができます。</p> - -<dl> - <dt>良い例:</dt> - <dd> - <pre class="example-good brush: http no-line-numbers notranslate">Cache-Control: no-store</pre> - - <div class="blockIndicator note"> - <p> <code>no-store</code> ディレクティブは、新しいリソースがキャッシュされることを防ぎますが、過去のリクエストの結果としてキャッシュ済みの古いリソースが応答するのを防ぐことはできません。 <code>max-age=0</code> を設定すると、キャッシュが強制的に再検証されます(キャッシュがクリアされます)。</p> - - <pre class="syntaxbox notranslate">Cache-Control: no-store, max-age=0 -</pre> - </div> - </dd> - <dt>悪い例:</dt> - <dd> - <pre class="example-bad brush: http no-line-numbers notranslate">Cache-Control: private,no-cache,no-store,max-age=0,must-revalidate,pre-check=0,post-check=0</pre> - </dd> -</dl> - -<h3 id="Caching_static_assets" name="Caching_static_assets">静的な資産のキャッシュ</h3> - -<p>変更されないアプリケーション内のファイルについては、通常、以下のレスポンスヘッダーを送信することで積極的にキャッシュを行うことができます。これには、例えば画像、 CSS ファイル、 JavaScript ファイルなど、アプリケーションによって提供される静的なファイルが含まれます。加えて、 {{HTTPHeader("Expires")}} ヘッダーも参照してください。</p> - -<pre class="brush: http no-line-numbers notranslate">Cache-Control: public, max-age=604800, immutable -</pre> - -<h3 id="Requiring_revalidation" name="Requiring_revalidation">再検証の要求</h3> - -<p><code>no-cache</code> または <code>max-age=0</code> を指定すると、クライアントはリソースをキャッシュすることができ、それを使用する前に毎回再検証をしなければならないことを示します。これは、 HTTP リクエストが毎回発生することを意味しますが、コンテンツが有効であれば、 HTTP 本文のダウンロードを飛ばすことができます。</p> - -<pre class="brush: http no-line-numbers notranslate">Cache-Control: no-cache -Cache-Control: no-cache, max-age=0 -</pre> - -<h2 id="Specifications" name="Specifications">仕様書</h2> - -<table class="standard-table"> - <thead> - <tr> - <th scope="col">仕様書</th> - <th scope="col">状態</th> - <th scope="col">備考</th> - </tr> - </thead> - <tbody> - <tr> - <td>{{RFC(8246, "HTTP Immutable Responses")}}</td> - <td><span class="spec-RFC">IETF RFC</span></td> - <td></td> - </tr> - <tr> - <td>{{RFC(7234, "Hypertext Transfer Protocol (HTTP/1.1): Caching")}}</td> - <td><span class="spec-RFC">IETF RFC</span></td> - <td></td> - </tr> - <tr> - <td>{{RFC(5861, "HTTP Cache-Control Extensions for Stale Content")}}</td> - <td><span class="spec-RFC">IETF RFC</span></td> - <td>初回定義</td> - </tr> - </tbody> -</table> - -<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2> - -<p>{{Compat("http.headers.Cache-Control")}}</p> - -<h2 id="See_also" name="See_also">関連情報</h2> - -<ul> - <li><a href="/ja/docs/Web/HTTP/Caching_FAQ">HTTP キャッシュ FAQ</a></li> - <li><a href="https://www.mnot.net/cache_docs/">Caching Tutorial for Web Authors and Webmasters</a></li> - <li>Guide: <em><a href="https://csswizardry.com/2019/03/cache-control-for-civilians"><code>Cache-Control</code> for civilians</a></em></li> - <li>{{HTTPHeader("Age")}}</li> - <li>{{HTTPHeader("Expires")}}</li> - <li>{{HTTPHeader("Pragma")}}</li> -</ul> 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(指示)が、リクエストとレスポンスの両方に含まれています。 + +<table class="properties"> + <tbody> + <tr> + <th scope="row">Header type</th> + <td> + {{Glossary("Request header")}}, + {{Glossary("Response header")}} + </td> + </tr> + <tr> + <th scope="row">{{Glossary("Forbidden header name")}}</th> + <td>no</td> + </tr> + <tr> + <th scope="row"> + {{Glossary("CORS-safelisted response header")}} + </th> + <td>yes</td> + </tr> + </tbody> +</table> + +## 構文 + +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` + - : レスポンスが生成されてからの時間です。レスポンスが新しい状態か古い状態かの基準となる。 + |