← Cloudflare Cache / cache / how-to / cache-rules
Создание правила через API
Используйте Rulesets API чтобы создать правило кеширования через API. Чтобы настроить Cloudflare API, см. Документация по API.
Базовые настройки правила
При создании правила кэширования через API убедитесь, что вы:
- Задайте для действия правила значение
set_cache_settings. - Определите параметры в
action_parametersполе в соответствии с настройки которые вы хотите переопределить для соответствующих запросов. - Разверните правило в
http_request_cache_settingsнабор правил точки входа фазы.
Процедура
- Используйте Список наборов правил зоны метод, чтобы получить список правил, уже присутствующих в
http_request_cache_settingsнабор правил точки входа фазы. - Если набор правил для этой фазы не существует, создайте его с помощью Создание набора правил зоны операцию. В свойствах нового набора правил задайте следующие значения:
- тип:
zone - фаза:
http_request_cache_settings
- тип:
- Используйте Обновление набора правил зоны операцию, чтобы добавить правило кеширования в список правил набора правил. Либо включите правило в Создание набора правил зоны запрос, упомянутый на предыдущем шаге.
- (Необязательно) Чтобы обновить существующее правило кэширования, используйте Обновление правила в наборе правил зоны операцию. Пример см. в разделе ниже.
Примеры запросов
В этих примерах все 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, должен иметь следующие разрешения:
- Zone > Cache Rules > Изменить
- Account Rulesets > Изменить
- Account Filter Lists > Изменить