跳转到内容
搜索文档

通过 API 创建规则

最后更新 查看 MarkdownAgent 设置

使用 Rulesets API 通过 API 创建 Cache Response Rule。要配置 Cloudflare API,请参阅 API 文档

基本规则设置

通过 API 创建 Cache Response Rule 时,请确保:

  • 将规则操作设置为可用操作之一。
  • 根据您希望为匹配响应配置的设置action_parameters 字段中定义参数。
  • 将规则部署到 http_response_cache_settings 阶段入口点 ruleset。

流程

  1. 使用 List zone rulesets 方法检查 http_response_cache_settings 阶段是否已存在 ruleset。
  2. 如果阶段 ruleset 不存在,使用 Create a zone ruleset 操作创建它。在新 ruleset 属性中,设置以下值:
    • kind: zone
    • phase: http_response_cache_settings
  3. 使用 Update a zone ruleset 操作向 ruleset 添加规则。或者,在上一步提到的 Create a zone ruleset 请求中包含规则。

示例请求

这些示例使用请求和响应匹配条件演示 Cache Response Rules 中的所有可用操作。直接使用这些示例将导致阶段中的任何现有规则被替换。

Example: Strip response headers from JS files before caching

Update a zone entry point rulesetbash
curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/rulesets/phases/http_response_cache_settings/entrypoint" \
	--request PUT \
	--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
	--json '{
		"rules": [
				{
						"expression": "http.request.uri.path.extension eq \"js\"",
						"description": "Strip caching headers from JS files",
						"action": "set_cache_settings",
						"action_parameters": {
								"strip_etags": true,
								"strip_set_cookie": true,
								"strip_last_modified": true
						}
				}
		]
	}'

Example: Set static cache tags on API responses

Update a zone entry point rulesetbash
curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/rulesets/phases/http_response_cache_settings/entrypoint" \
	--request PUT \
	--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
	--json '{
		"rules": [
				{
						"expression": "http.request.uri.path starts_with \"/api/\"",
						"description": "Tag API responses for targeted purging",
						"action": "set_cache_tags",
						"action_parameters": {
								"operation": "set",
								"values": [
										"api-response",
										"dynamic-content"
								]
						}
				}
		]
	}'

Example: Add cache tags from a response header using an expression

Update a zone entry point rulesetbash
curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/rulesets/phases/http_response_cache_settings/entrypoint" \
	--request PUT \
	--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
	--json '{
		"rules": [
				{
						"expression": "any(http.response.headers.names[*] == \"Surrogate-Keys\")",
						"description": "Extract cache tags from alternative CDN response header",
						"action": "set_cache_tags",
						"action_parameters": {
								"operation": "add",
								"expression": "split(http.response.headers[\"Surrogate-Keys\"][0], \",\", 1)"
						}
				}
		]
	}'

Example: Override cache-control with max-age

Update a zone entry point rulesetbash
curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/rulesets/phases/http_response_cache_settings/entrypoint" \
	--request PUT \
	--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
	--json '{
		"rules": [
				{
						"expression": "http.response.code eq 200",
						"description": "Override cache-control for successful responses",
						"action": "set_cache_control",
						"action_parameters": {
								"max-age": {
										"operation": "set",
										"value": 3600,
										"cloudflare_only": true
								}
						}
				}
		]
	}'

Example: Set private directive with qualifiers

Update a zone entry point rulesetbash
curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/rulesets/phases/http_response_cache_settings/entrypoint" \
	--request PUT \
	--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
	--json '{
		"rules": [
				{
						"expression": "http.request.uri.path starts_with \"/user/\"",
						"description": "Mark user content as private",
						"action": "set_cache_control",
						"action_parameters": {
								"private": {
										"operation": "set",
										"qualifiers": [
												"X-User-Id",
												"X-Session-Token"
										]
								},
								"no-cache": {
										"operation": "set"
								}
						}
				}
		]
	}'

Example: Set immutable for static font assets

Update a zone entry point rulesetbash
curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/rulesets/phases/http_response_cache_settings/entrypoint" \
	--request PUT \
	--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
	--json '{
		"rules": [
				{
						"expression": "http.request.uri.path.extension in {\"woff2\" \"woff\" \"ttf\"}",
						"description": "Mark fonts as immutable",
						"action": "set_cache_control",
						"action_parameters": {
								"immutable": {
										"operation": "set"
								},
								"max-age": {
										"operation": "set",
										"value": 31536000
								}
						}
				}
		]
	}'

Example: Multiple rules with strip headers, tag responses, and set cache control

Update a zone entry point rulesetbash
curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/rulesets/phases/http_response_cache_settings/entrypoint" \
	--request PUT \
	--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
	--json '{
		"rules": [
				{
						"expression": "http.response.code eq 200 and http.request.uri.path.extension eq \"html\"",
						"description": "Strip tracking headers from HTML responses",
						"action": "set_cache_settings",
						"action_parameters": {
								"strip_etags": true,
								"strip_set_cookie": true
						}
				},
				{
						"expression": "http.request.uri.path starts_with \"/products/\"",
						"description": "Tag product pages for purging",
						"action": "set_cache_tags",
						"action_parameters": {
								"operation": "add",
								"values": [
										"product-catalog",
										"storefront"
								]
						}
				},
				{
						"expression": "http.response.code eq 200",
						"description": "Set cache control for all 200 responses",
						"action": "set_cache_control",
						"action_parameters": {
								"s-maxage": {
										"operation": "set",
										"value": 86400,
										"cloudflare_only": true
								},
								"must-revalidate": {
										"operation": "set"
								}
						}
				}
		]
	}'

所需的 API 令牌权限

用于 API 请求管理 Cache Response Rules 的 API 令牌必须具有以下权限:

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

这篇文档对您有帮助吗?