Skip to content

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

API でルールを作成する

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

Rulesets API を使い、API 経由でキャッシュルールを作成します。Cloudflare の API の設定は API ドキュメント を参照してください。

基本的なルール設定

API 経由でキャッシュルールを作成するときは、次を確認します。

  • ルールアクションを set_cache_settings に設定する。
  • 一致するリクエストで上書きしたい 設定 に従い、action_parameters フィールドでパラメーターを定義する。
  • ルールを http_request_cache_settings フェーズのエントリポイントルールセットにデプロイする。

手順

  1. List zone rulesets メソッドを使い、http_request_cache_settings フェーズのエントリポイントルールセットにすでにあるルールの一覧を取得します。
  2. フェーズルールセットが存在しない場合は、Create a zone ruleset 操作で作成します。新しいルールセットのプロパティで、次の値を設定します。
    • kind: zone
    • phase: http_request_cache_settings
  3. Update a zone ruleset 操作を使い、ルールセットのルール一覧にキャッシュルールを追加します。または、前のステップの Create a zone ruleset リクエストにルールを含めます。
  4. (任意)既存のキャッシュルールを更新するには、Update a zone ruleset rule 操作を使います。例は次のセクションを参照してください。

リクエストの例

これらの例は、ゾーンのすべての Cache Rules を 1 つのルールに設定します。そのまま使うと、既存のルールは削除されます。

例: example.com ですべてをキャッシュする

Update a zone rulesetbash
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 クライアントの読み取りタイムアウトを延長する

Update a zone rulesetbash
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 を無効にする

Update a zone rulesetbash
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 をオンにする

Update a zone entry point rulesetbash
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 をオフにする

Update a zone entry point rulesetbash
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 をオフにする

Update a zone rulesetbash
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 応答をキャッシュする

Update a zone entry point rulesetbash
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"
														]
												}
										}
								}
						}
				}
		]
	}'

例: 既存ルールの位置を更新する

Update a zone ruleset rulebash
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"
		}
	}'

必要な API トークン権限

Cache Rules を管理する API リクエストで使う API トークンには、次の権限が必要です。

  • Zone > Cache Rules > Edit
  • Account Rulesets > Edit
  • Account Filter Lists > Edit

役に立ちましたか?