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 操作を使います。例は次のセクションを参照してください。
これらの例は、ゾーンのすべての Cache Rules を 1 つのルールに設定します。そのまま使うと、既存のルールは削除されます。
例: example.com ですべてをキャッシュする
curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/rulesets/$RULESET_ID" \
--request PUT \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--json '{
"rules": [
{
"expression": "(http.host eq \"example.com\")",
"description": "cache everything for example.com",
"action": "set_cache_settings",
"action_parameters": {
"cache": true
}
}
]
}'例: Android クライアントの読み取りタイムアウトを延長する
curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/rulesets/$RULESET_ID" \
--request PUT \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--json '{
"rules": [
{
"expression": "(http.user_agent contains \"Android\")",
"description": "extend read timeout for android clients",
"action": "set_cache_settings",
"action_parameters": {
"cache": true,
"read_timeout": 300
}
}
]
}'例: 頻繁に更新されるアセットで Cache Reserve を無効にする
curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/rulesets/$RULESET_ID" \
--request PUT \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--json '{
"rules": [
{
"expression": "(starts_with(http.request.uri, \"/feed/\"))",
"description": "disable cache reserve for frequently updated assets",
"action": "set_cache_settings",
"action_parameters": {
"cache": true,
"cache_reserve": {
"enabled": false
}
}
}
]
}'例: 大きなメディアファイルで Origin Range Requests をオンにする
curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/rulesets/phases/http_request_cache_settings/entrypoint" \
--request PUT \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--json '{
"rules": [
{
"expression": "(http.request.uri.path.extension in {\"mp4\" \"mov\" \"m4v\"})",
"description": "turn on origin range requests for large media files",
"action": "set_cache_settings",
"action_parameters": {
"cache": true,
"origin_range_requests": {
"mode": "on"
}
}
}
]
}'例: デフォルトの Origin Range Requests をオフにする
curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/rulesets/phases/http_request_cache_settings/entrypoint" \
--request PUT \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--json '{
"rules": [
{
"expression": "true",
"description": "turn off default Origin Range Requests",
"action": "set_cache_settings",
"action_parameters": {
"origin_range_requests": {
"mode": "off"
}
}
}
]
}'例: デフォルトのキャッシュ TTL をオフにする
curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/rulesets/$RULESET_ID" \
--request PUT \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--json '{
"rules": [
{
"expression": "(http.host eq \"example.com\")",
"description": "turn off default cache ttls",
"action": "set_cache_settings",
"action_parameters": {
"cache": true,
"edge_ttl": {
"mode": "bypass_by_default"
}
}
}
]
}'例: 想定される Vary 応答をキャッシュする
curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/rulesets/phases/http_request_cache_settings/entrypoint" \
--request PUT \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--json '{
"rules": [
{
"expression": "(http.host eq \"example.com\")",
"description": "cache expected vary responses",
"action": "set_cache_settings",
"action_parameters": {
"cache": true,
"vary": {
"default": {
"action": "bypass"
},
"headers": {
"accept": {
"action": "normalize",
"media_types": [
"text/html",
"application/json"
]
},
"accept-language": {
"action": "normalize",
"languages": [
"en",
"fr",
"de"
]
}
}
}
}
}
]
}'例: 既存ルールの位置を更新する
curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/rulesets/$RULESET_ID/rules/$RULE_ID" \
--request PATCH \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--json '{
"expression": "(http.host eq \"example.com\")",
"description": "cache everything for example.com",
"action": "set_cache_settings",
"action_parameters": {
"cache": true
},
"enabled": true,
"position": {
"before": "da5e8e506c8e7877fe06cdf4c41add54"
}
}'Cache Rules を管理する API リクエストで使う API トークンには、次の権限が必要です。
- Zone > Cache Rules > Edit
- Account Rulesets > Edit
- Account Filter Lists > Edit