Skip to content

非公式本サイトは非公式の日本語ドキュメントであり、Cloudflare 公式サイトではありません。最新情報はdevelopers.cloudflare.comをご確認ください。

CDN-Cache-Control

最終更新 Markdown で表示Agent セットアップ

CDN-Cache-Control は、オリジンで設定するレスポンスヘッダーです。応答を扱うほかの中間キャッシュと別に、CDN キャッシュの動作を制御できます。CDN-Cache-Control または Cloudflare-CDN-Cache-Control レスポンスヘッダーには、Cache-Control と同じディレクティブを使えます。

ヘッダーの優先順位

CDN-Cache-Control ディレクティブと Cache-Control ディレクティブの関係は、いくつかの方法で決められます。

Cache Response Ruleset_cache_control アクションで Cache-Control ディレクティブを設定している場合、そのディレクティブがオリジンで設定した Cloudflare-CDN-Cache-Control および CDN-Cache-Control ヘッダーより優先されます。

Cache Response Rule が適用されない場合、オリジンは次のいずれかを返せます。

  • CDN-Cache-Control レスポンスヘッダーを返すと、Cloudflare はこのヘッダーを評価してキャッシュ判断をします。オリジンが Cache-Control も返す場合、そのヘッダーはそのままプロキシされ、Cloudflare のキャッシュ判断には使いません。さらに、Cloudflare とブラウザーの間にほかの CDN がある場合に備え、CDN-Cache-Control は下流にもプロキシされます。

  • Cloudflare-CDN-Cache-Control レスポンスヘッダーを返します。動作はオリジンが CDN-Cache-Control を返す場合と同じですが、Cloudflare-CDN-Cache-Control は Cloudflare 専用のヘッダーのため、下流にはプロキシしません。Cloudflare だけキャッシュ動作を変え、下流のサーバーは Cache-Control に従わせたい場合や、CDN-Cache-Control を下流にプロキシしたくない場合に向いています。

  • Cloudflare-CDN-Cache-ControlCDN-Cache-Control の両方を返します。この場合、Cloudflare はキャッシュ判断に Cloudflare-CDN-Cache-Control だけを使います。これが CDN-Cache-Control のもっとも具体的な版だからです。下流には CDN-Cache-Control をプロキシします。下流のほかの CDN と Cloudflare でキャッシュ動作を分けたい場合に、この方法が向いています。

また、サロゲートはオリジン応答の Cache-Control ヘッダーに従いません。たとえば、応答に Surrogate-Control ヘッダーがある場合、そのヘッダーにディレクティブがなくても、Cloudflare は Cache-Control ディレクティブを無視します。

ほかの Cloudflare 機能との関係

Edge Cache TTL の Cache Rule

Edge Cache TTL の Cache Rule は、エッジ(Cloudflare のデータセンター)でアセットをキャッシュする時間を上書きします。エッジでのキャッシュ期間を決める Cloudflare-CDN-Cache-Control / CDN-Cache-Control のディレクティブより、このルールが優先されます。ダッシュボードの Caching > Cache Rules で作成できます。

Browser Cache TTL の Cache Rule

Browser Cache TTL の Cache Rule は、Cloudflare より下流のブラウザーやサーバーがアセットをキャッシュする時間を上書きします。Browser Cache TTL が変更するのは Cache-Control レスポンスヘッダーだけです。Cloudflare-CDN-Cache-Control / CDN-Cache-Control は変更しません。

その他のオリジンレスポンスヘッダー

オリジンが返す Expires レスポンスヘッダーは、ブラウザーがオブジェクトを古いとみなすまでの時間を指定します。Cloudflare-CDN-Cache-Control / CDN-Cache-Control を使っている場合、このヘッダーは Cloudflare のキャッシュ判断に影響しません。

Cloudflare のデフォルトキャッシュ値

Cloudflare が Cloudflare-CDN-Cache-ControlCDN-Cache-ControlCache-Control のいずれも受け取らない場合、キャッシュ可能なアセットは一般的な デフォルト値 を使います。

CDN-Cache-Control を使う場面

キャッシュ済みアセットの TTL を管理する

オリジンキャッシュ、CDN キャッシュ、ブラウザーキャッシュで、キャッシュ済みアセットの TTL を別々に管理したいときに CDN-Cache-Control を使います。次の例は、オリジンが返すレスポンスヘッダーで TTL を管理する方法です。

ヘッダー:

  • Cache-Control: max-age=14400, s-maxage=84000
  • Cloudflare-CDN-Cache-Control: max-age=24400
  • CDN-Cache-Control: max-age=18000

キャッシュの動作:

キャッシュ

キャッシュ TTL(秒)

オリジンサーバーキャッシュ

14400

ネットワーク共有キャッシュ

84000

Cloudflare エッジ

24400

ほかの CDN

18000

ブラウザーキャッシュ

14400

ステールコンテンツを配信する条件を指定する

エラー時や再検証中にステールコンテンツを配信する条件は、CDN-Cache-Control ヘッダーと Cache-Control ヘッダーを組み合わせて指定します。次の例は、エラー処理時に CDN へ適用するヘッダーとディレクティブの設定です。

ヘッダー:

  • Cache-Control: stale-if-error=400
  • Cloudflare-CDN-Cache-Control: stale-if-error=60
  • CDN-Cache-Control: stale-if-error=200

5XX エラー への応答時の動作:

キャッシュ

エラー時に配信するステール(秒)

オリジンキャッシュ層 / ネットワークキャッシュ / ブラウザーキャッシュ

400(ディレクティブが適用されるとみなす場合)

Cloudflare エッジ

60

ほかの CDN

200

役に立ちましたか?