APIを介してルールを作成する
Rulesets API ↗を使用して、APIを介してキャッシュルールを作成します。CloudflareのAPIの設定については、APIドキュメントを参照してください。
APIを介してキャッシュルールを作成する際は、以下の点に注意してください:
- ルールアクションを
set_cache_settingsに設定します。 action_parametersフィールドで、マッチするリクエストに対して上書きしたい設定に従ってパラメータを定義します。- ルールを
http_request_cache_settingsフェーズエントリポイントルールセットにデプロイします。
- List zone rulesetsメソッドを使用して、
http_request_cache_settingsフェーズエントリポイントルールセットに既に存在するルールのリストを取得します。 - フェーズルールセットが存在しない場合は、Create a zone ruleset操作を使用して作成します。新しいルールセットのプロパティで、以下の値を設定します:
- kind:
zone - phase:
http_request_cache_settings
- kind:
- Update a zone ruleset操作を使用して、ルールセットのルールリストにキャッシュルールを追加します。あるいは、前のステップで言及したCreate a zone rulesetリクエストにルールを含めます。
- (オプション)既存のキャッシュルールを更新するには、Update a zone ruleset rule操作を使用します。例については、以下のセクションを参照してください。
これらの例は、ゾーンのすべてのキャッシュルールを単一のルールに設定しています。これらの例を直接使用すると、既存のルールが削除されるため注意してください。
例: example.comのすべてをキャッシュする
curl --request PUT \https://api.cloudflare.com/client/v4/zones/{zone_id}/rulesets/{ruleset_id} \--header "Authorization: Bearer <API_TOKEN>" \--header "Content-Type: application/json" \--data '{ "rules": [ { "expression": "(http.host eq \"example.com\")", "description": "example.comのすべてをキャッシュする", "action": "set_cache_settings", "action_parameters": { "cache": true } } ]}'例: Androidクライアントの読み取りタイムアウトを延長する
curl --request PUT \https://api.cloudflare.com/client/v4/zones/{zone_id}/rulesets/{ruleset_id} \--header "Authorization: Bearer <API_TOKEN>" \--header "Content-Type: application/json" \--data '{ "rules": [ { "expression": "(http.user_agent contains \"Android\")", "description": "Androidクライアントの読み取りタイムアウトを延長する", "action": "set_cache_settings", "action_parameters": { "cache": true, "read_timeout": 300 } } ]}'例: 頻繁に更新されるアセットのキャッシュリザーブを無効にする
curl --request PUT \https://api.cloudflare.com/client/v4/zones/{zone_id}/rulesets/{ruleset_id} \--header "Authorization: Bearer <API_TOKEN>" \--header "Content-Type: application/json" \--data '{ "rules": [ { "expression": "(starts_with(http.request.uri, \"/feed/\"))", "description": "頻繁に更新されるアセットのキャッシュリザーブを無効にする", "action": "set_cache_settings", "action_parameters": { "cache": true, "cache_reserve": { "enabled": false } } } ]}'例: デフォルトのキャッシュTTLをオフにする
curl --request PUT \https://api.cloudflare.com/client/v4/zones/{zone_id}/rulesets/{ruleset_id} \--header "Authorization: Bearer <API_TOKEN>" \--header "Content-Type: application/json" \--data '{ "rules": [ { "expression": "(http.host eq \"example.com\")", "description": "デフォルトのキャッシュTTLをオフにする", "action": "set_cache_settings", "action_parameters": { "cache": true, "edge_ttl": { "mode": "bypass_by_default" } } } ]}'例: 既存のルールの位置を更新する
curl --request PATCH \https://api.cloudflare.com/client/v4/zones/{zone_id}/rulesets/{ruleset_id}/rules/{rule_id} \--header "Authorization: Bearer <API_TOKEN>" \--header "Content-Type: application/json" \--data '{ "expression": "(http.host eq \"example.com\")", "description": "example.comのすべてをキャッシュする", "action": "set_cache_settings", "action_parameters": { "cache": true } "enabled": true, "position": { "before": "da5e8e506c8e7877fe06cdf4c41add54" }}'キャッシュルールを管理するためにAPIリクエストで使用されるAPIトークンは、以下の権限を持っている必要があります:
- Zone > Cache Rules > Edit
- Account Rulesets > Edit
- Account Filter Lists > Edit