同じリクエストで Cache Rules と Workers の両方を使う場合、Worker のキャッシュ設定が優先されます。ただし、必要な 互換性フラグ が有効なときだけです。
Worker スクリプトは、Cloudflare でプロキシしているドメインへのリクエストでも、そうでないドメインへのリクエストでも、Cache Rules の動作を上書きできます。たとえば、Cache Rule が example.com/foo のキャッシュをバイパスする設定でも、Worker スクリプトが fetch() リクエストの cf オブジェクト で cacheEverything: true を設定している場合は、Worker の設定が優先され、レスポンスはキャッシュされます。
キャッシュの動作は、次の優先順位で決まります。
- Workers スクリプトの設定
- Cache Rules
- Page Rules
Workers は Cache Rules を上書きし、Cache Rules は Page Rules を上書きします。同じレベルの複数ルールが同じリクエストに一致する場合、競合する設定については 最後に一致したルールが優先 されます。
上書きの動作は 互換性フラグ で制御します。互換性フラグは、Worker を特定のランタイム動作にオプトインする設定です。フラグが 2 つあるのは、Workers がキャッシュとやり取りする方法が 2 通りあるためです。
- Fetch API(
cfプロパティ付きのfetch()):request_cf_overrides_cache_rules - Cache API(
caches.default.put()/caches.default.match()):cache_api_request_cf_overrides_cache_rules
Worker スクリプトが Cache Rules を上書きするには、これらのフラグを有効にする必要があります。使っている API に対応するフラグが有効でない場合、Worker のキャッシュ設定は無視され、代わりに Cache Rules が適用されます。エラーは出ません。
Worker の 互換日 によって、デフォルトで有効になるフラグが決まります。互換日を設定すると、その日付以前に有効化日があるフラグがすべて自動でオンになります。
| フラグ | デフォルトで有効になる条件 | 前提条件 |
|---|---|---|
request_cf_overrides_cache_rules(Fetch API) |
互換日が 2025-04-02 以降 |
なし |
cache_api_compat_flags |
互換日が 2025-04-19 以降 |
なし |
cache_api_request_cf_overrides_cache_rules(Cache API) |
互換日が 2025-05-19 以降 |
cache_api_compat_flags が必要 |
Cache API には追加の要件があります。Cache API で互換性フラグを効かせるには、cache_api_compat_flags を有効にする必要があります。これがないと、設定に明示的に書いたフラグも含め、Cache API はすべての互換性フラグを無視します。
Worker の互換日が上の表の日付より前の場合は、フラグを設定に手動で追加する必要があります。追加しないと、キャッシュ動作は Worker の設定ではなく Cache Rules に従います。
Cache Rule が example.com/foo のキャッシュをバイパスします。互換日が 2025-04-02 より前の Worker が、fetch() で cacheEverything: true を設定します。互換日が古く、request_cf_overrides_cache_rules がデフォルトでは有効にならないため、Cache Rule が優先され、レスポンスはキャッシュされません。
同様に、Cache API を使っていて互換日が 2025-04-19 より前の場合、cache_api_compat_flags は有効になりません。設定に cache_api_request_cf_overrides_cache_rules を手動で追加しても、cache_api_compat_flags がなければ Cache API は互換性フラグを認識しないため、効果はありません。