Skip to content

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

Workers と Cache Rules の連携

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

同じリクエストで Cache RulesWorkers の両方を使う場合、Worker のキャッシュ設定が優先されます。ただし、必要な 互換性フラグ が有効なときだけです。

Worker スクリプトは、Cloudflare でプロキシしているドメインへのリクエストでも、そうでないドメインへのリクエストでも、Cache Rules の動作を上書きできます。たとえば、Cache Rule が example.com/foo のキャッシュをバイパスする設定でも、Worker スクリプトが fetch() リクエストの cf オブジェクトcacheEverything: true を設定している場合は、Worker の設定が優先され、レスポンスはキャッシュされます。

優先順位

キャッシュの動作は、次の優先順位で決まります。

  1. Workers スクリプトの設定
  2. Cache Rules
  3. Page Rules

Workers は Cache Rules を上書きし、Cache Rules は Page Rules を上書きします。同じレベルの複数ルールが同じリクエストに一致する場合、競合する設定については 最後に一致したルールが優先 されます。

互換性フラグ

上書きの動作は 互換性フラグ で制御します。互換性フラグは、Worker を特定のランタイム動作にオプトインする設定です。フラグが 2 つあるのは、Workers がキャッシュとやり取りする方法が 2 通りあるためです。

  • Fetch APIcf プロパティ付きの fetch()): request_cf_overrides_cache_rules
  • Cache APIcaches.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 は互換性フラグを認識しないため、効果はありません。

役に立ちましたか?