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

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

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

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

При создании правила кэширования через API убедитесь, что вы:

Процедура

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

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

В этих примерах все Cache Rules зоны заменяются одним правилом: при прямом использовании этих примеров все существующие правила будут удалены.

Пример: кеширование всего содержимого для 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
								}
						}
				}
		]
	}'

Пример: отключение 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"
		}
	}'

Необходимые разрешения API-токена

API-токен, используемый в API-запросах для управления Cache Rules, должен иметь следующие разрешения: