Cache Response Rules では、リクエストとレスポンスの属性に基づいてキャッシュ設定を構成できます。これらのルールは、キャッシュ前の http_response_cache_settings フェーズで実行されます。このフェーズは、Cloudflare がオリジンレスポンスを受け取ったあとに走ります。
Cache Response Rules では、次のことができます。
- オリジンが送る
Cache-Controlディレクティブを変更する。 - 対象を絞った キャッシュパージ のため、レスポンスのキャッシュタグを変更する。
- キャッシュ前に、オリジンレスポンスからヘッダー(
ETag、Set-Cookie、Last-Modified)を取り除く。
Cache Response Rules は、オリジンからのキャッシュ済みレスポンスと、キャッシュされない(動的な)レスポンスの両方に適用されます。たとえば、キャッシュ対象外のレスポンスから Set-Cookie ヘッダーを取り除けます。
Cache Response Rules は、ダッシュボード、API、または Terraform で作成できます。
次の表は、プランごとの Cache Response Rules の利用可否です。
| Free | Pro | Business | Enterprise | |
|---|---|---|---|---|
| 利用可否 | はい | はい | はい | はい |
| ルール数 | 10 | 25 | 50 | 300 |
Cache Response Rules のトラブルシューティングでは、Cloudflare Trace を使い、特定の URL でルールが発動するかどうかを確認します。
Cache Response Rules はオリジンレスポンスに対して動作し、Cache Rules は受信リクエストに対して動作します。両方のルール種別の設定が衝突する場合は、Cache Response Rules が優先されます。
主な違い:
- キャッシュ対象かどうか: コンテンツをキャッシュ対象にするかどうかは、引き続き Cache Rules だけで決まります。ただし Cache Response Rules は、
set_cache_controlアクションでno-storeディレクティブを設定し、キャッシュ可能なアセットをキャッシュ対象外にできます。 - Origin Cache Control (OCC):
http_response_cache_settingsフェーズのいずれかのルールが一致すると、Cloudflare は Origin Cache Control の動作(origin_cache_control = true)をデフォルトにします。 - CDN-Cache-Control の優先順位: Cache Response Rules が設定した
Cache-Controlディレクティブは、オリジンが設定したCloudflare-CDN-Cache-ControlおよびCDN-Cache-Controlヘッダーより優先されます。詳細は CDN-Cache-Control ヘッダーの優先順位 を参照してください。 - 積み重ね: Cache Response Rules の積み重ね方は Cache Rules と同じです。複数のルールが同じ設定を指定した場合、最後に一致したルールが勝ります。
次のシナリオを考えます。
- Cache Rule が Edge TTL を
override_origin、値を7200秒(2 時間)に設定する。 - Cache Response Rule が
set_cache_controlでs-maxageを3600秒(1 時間)に設定し、cloudflare_onlyを有効にする。 - オリジンが
Cache-Control: s-maxage=600で応答する。
この場合、Cache Response Rule が優先されます。Cloudflare は Cache Response Rule が設定した s-maxage に従い、アセットを 3600 秒(1 時間)キャッシュします。cloudflare_only が有効なため、訪問者にはオリジンの元の s-maxage=600 が届きます。
Workers と Response Header Transform Rules は、キャッシュの判断が終わったあとに実行され、レスポンスをキャッシュするかどうか、またはどうキャッシュするかに影響できません。オリジンのレスポンスヘッダーに基づいてキャッシュ動作を変えられるのは Cache Response Rules だけです。
オリジンの Cache-Control ディレクティブを上書きする必要がある場合(たとえば private を削除する、s-maxage を追加する)は、Worker や Transform Rule ではなく Cache Response Rule を使います。
- Last-Modified を取り除くと、Smart Edge Revalidation はオフになります。
- Cache Response Rules は
1xxHTTP レスポンスステータスコード を無視します。これらは情報レスポンスとして扱われるためです。 - Cache Response Rules はバージョン管理できます。詳細は Version Management のドキュメントを参照してください。