INTEGRITY Документация

Создание правила через API

Используйте Rulesets API чтобы создать Cache Response Rule через API. Чтобы настроить Cloudflare API, см. Документация по API.

Базовые настройки правила

При создании Cache Response Rule через API убедитесь, что вы:

Процедура

  1. Используйте Список наборов правил зоны метод, чтобы проверить, существует ли уже набор правил для http_response_cache_settings фазы.
  2. Если набор правил для этой фазы не существует, создайте его с помощью Создание набора правил зоны операцию. В свойствах нового набора правил задайте следующие значения:
    • тип: zone
    • фаза: http_response_cache_settings
  3. Используйте Обновление набора правил зоны операцию, чтобы добавить правила в набор правил. Либо включите правила в Создание набора правил зоны запрос, упомянутый на предыдущем шаге.

Примеры запросов

Эти примеры демонстрируют все доступные действия в Cache Response Rules с использованием критериев сопоставления запроса и ответа. При прямом использовании этих примеров все существующие правила на этом этапе будут заменены.

Пример: удаление заголовков ответа из JS-файлов перед кешированием

Обновление набора правил точки входа зоны
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
						}
				}
		]
	}'

Пример: установка статических тегов кеша для ответов API

Обновление набора правил точки входа зоны
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"
								]
						}
				}
		]
	}'

Пример: добавление тегов кеша из заголовка ответа с помощью выражения

Обновление набора правил точки входа зоны
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)"
						}
				}
		]
	}'

Пример: переопределение cache-control значением max-age

Обновление набора правил точки входа зоны
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
								}
						}
				}
		]
	}'

Пример: установка директивы private с уточняющими параметрами

Обновление набора правил точки входа зоны
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"
								}
						}
				}
		]
	}'

Пример: установка immutable для статических файлов шрифтов

Обновление набора правил точки входа зоны
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
								}
						}
				}
		]
	}'

Пример: несколько правил с удалением заголовков, тегированием ответов и настройкой cache control

Обновление набора правил точки входа зоны
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-токен, используемый в API-запросах для управления Cache Response Rules, должен иметь следующие разрешения: