← Cloudflare Cache / cache / how-to / cache-rules
Доступные настройки
Это настройки, которые можно задать при создании правила кеширования.
Поля
Поля, доступные для выражений сопоставления Cache Rule в Expression Builder это:
- URI Full -
http.request.full_uri - URI -
http.request.uri - URI Path -
http.request.uri.path - URI Query String -
http.request.uri.query - Cookie:
http.cookie - Имя хоста -
http.host - Referer:
http.referer - SSL/HTTPS:
ssl - User Agent -
http.user_agent - X-Forwarded-For -
http.x_forwarded_for - Заголовки запроса:
http.request.headers - Значение cookie:
http.request.cookies - Расширение файла -
http.request.uri.path.extension
Если вы выберете Edit expression параметра можно ввести любое из доступные поля.
Операторы
Для выражений Cache Rule доступны следующие операторы:
- подстановочный знак
- строгий подстановочный знак
- равно
- does not equal
- contains
- does not contain
- matches regex
- does not match regex
- starts with
- заканчивается на
- does not start with
- does not end with
- входит в
- не входит в
- входит в список
- не входит в список
Допустимость кеширования
В Допустимость кеширования, у вас есть возможность выбрать Bypass cache если не хотите кэшировать соответствующие запросы, или Подлежит кешированию если хотите, чтобы Cloudflare пытался их кэшировать.
Bypass cache
При создании правила кэширования можно выбрать Bypass cache если не хотите кэшировать входящие запросы, соответствующие условию. Также можно использовать Development Mode, если вы хотите обходить кеш на более короткие периоды времени.
Настройки «Подлежит кешированию»
Если вы выбираете Подлежит кешированию, вы можете изменить настройки конфигурации, описанные ниже.
Edge TTL
Edge Cache TTL определяет максимальное время жизни кеша (TTL), то есть срок, в течение которого ресурс считается актуальным и может выдаваться из кеша Cloudflare в ответ на запросы. У этой настройки есть три основных варианта:
- Используется заголовок cache-control, если он есть, иначе кеш не используется: Если в ответе присутствует заголовок cache-control, применяются его директивы. Если нет, кеширование не выполняется.
- Используется заголовок cache-control, если он есть, иначе используется поведение кеширования Cloudflare по умолчанию: Если в ответе присутствует заголовок cache-control, применяются его директивы. Если нет, кеширование происходит согласно нашим настройки Edge TTL по умолчанию.
- Ignore cache-control header and use this TTL: Полностью игнорирует заголовок cache-control в ответе и кеширует ответ на срок, указанный в раскрывающемся списке времени.
Кроме того, вы можете указать, как долго содержимое для определённого кода состояния должно кэшироваться в глобальной сети Cloudflare. В Status Code TTL разделе можно задать длительность TTL для одного или нескольких кодов состояния ответов от сервера источника. Эту настройку можно применить к Отдельный код код состояния, в Больше или равно или Меньше или равно код состояния, либо в Диапазон кодов статуса. TTL для кодов статуса аналогичны Ignore cache-control header and use this TTL в том, что заголовок cache-control в ответе будет игнорироваться в пользу TTL, заданного правилом кэширования. Дополнительную информацию см. в Status code TTL.
Информация об API
Имя объекта конфигурации API: "edge_ttl".
| Значения API | Конфигурация |
|---|---|
respect_origin |
Используется заголовок cache-control, если он есть, иначе используется Поведение кеширования Cloudflare если нет. |
override_origin |
Ignore cache-control header and use this TTL. |
bypass_by_default |
Используется заголовок cache-control, если он есть, иначе кеш не используется. |
"action_parameters": {
"cache": true,
"edge_ttl": {
"status_code_ttl": [
{
"status_code_range": {
"to": 299
},
"value": 86400
},
{
"status_code_range": {
"from": 300,
"to": 499
},
"value": 0 // no-cache
},
{
"status_code_range": {
"from": 500
},
"value": -1 // no-store
}
],
"mode": "respect_origin"
}
}
См. Создание правила кеширования через API с полными примерами API.
Browser TTL
Browser TTL, это максимальное время жизни (TTL), в течение которого ресурс должен считаться доступным для обслуживания из кэша браузера.
Выберите, если хотите Bypass cache, Respect origin, или Переопределить источник. Если вы хотите переопределить значение Browser TTL, задайте в раскрывающемся меню, как долго ресурсы, кешированные в браузерах клиентов, будут оставаться актуальными. Дополнительную информацию см. в Browser Cache TTL.
Информация об API
Имя объекта конфигурации API: "browser_ttl".
Значения API для "mode" свойство: "respect_origin", "override_origin", "bypass_by_default".
Значения API для "default" свойство (целое число): доступные значения зависят от вашего плана. См. Browser Cache TTL.
"action_parameters": {
"cache": true,
"browser_ttl" : {
"mode": "override_origin",
"default": 1000
}
}См. Создание правила кеширования через API с полными примерами API.
Cache Key
Ключи кеша определяют критерии, по которым Cloudflare решает, как хранить ресурсы в кеше. Настройка Cache Key позволяет управлять тем, как Cloudflare повторно использует отдельные записи кеша для разных запросов или разделяет их более детально для конечных пользователей.
Явного ограничения по длине ключей кеша не существует. Однако общий размер запроса (включая заголовки, используемые в ключе кеша) не должен превышать ограничения запросов. Включение больших значений (например, cookie) в ключ кеша может увеличивать задержку на каждый запрос. Максимальное количество параметров строки запроса в пользовательской конфигурации ключа кеша составляет 100.
Определите компоненты запроса, используемые для определения пользовательский Cache Key, настроив следующие параметры:
- Можно включить или отключить Cache Deception Armor, Кеширование по типу устройства, а также Сортировка строки запроса.
У клиентов на плане Enterprise есть следующие дополнительные параметры для настраиваемых Cache Keys:
-
В Строка запроса разделе можно выбрать Все параметры строки запроса, Все параметры строки запроса, кроме и введите исключение, Без параметров запроса, кроме и введите параметры, либо Ignore query string (также доступно для клиентов с оплатой по факту использования).
-
В Headers разделе можно указать имена заголовков вместе с их значениями. Для пользовательских заголовков значения необязательны, однако для следующих ограниченных заголовков необходимо указать от одного до трёх конкретных значений:
acceptaccept-charsetaccept-encodingaccept-datetimeaccept-languagerefereruser-agent
Чтобы проверить наличие заголовка без учёта его значения, используйте Проверка наличия параметр. Вы также можете выбрать, следует ли Включать заголовок источника.
-
В Cookie разделе можно указать имена файлов cookie и их значения, а также проверить наличие другого файла cookie.
-
В Host разделе можно выбрать Использование исходного хоста и Разрешённый хост. В Пользователь разделе можно выбрать Тип устройства, Страна, а также Язык. Используя Разрешённый хост означает, что ключ кеша будет содержать то имя хоста, которое использовалось для определения IP-адреса источника, а оно может отличаться в зависимости от того, resolve override функция включена или нет.
Информация об API
Имя объекта конфигурации API: "cache_key".
Значения API: "ignore_query_strings_order", "cache_deception_armor", "cache_by_device_type", "custom_key" ("header", "cookie", "host", "query_string", "user").
"action_parameters": {
"cache": true,
"cache_key": {
"ignore_query_strings_order": true,
"cache_deception_armor": true,
"custom_key": {
"query_string": {
"include": [
"*"
]
},
"header": {
"include": [
"header1"
],
"check_presence": [
"header_1"
],
"contains": {
"accept-encoding": ["br", "zstd"]
}
},
"cookie": {
"include": [
"cookieName1"
],
"check_presence": [
"cookie_1"
]
},
"user": {
"device_type": true,
"geo": true,
"lang": true
},
"host": {
"resolved": false
}
}
}
}См. Создание правила кеширования через API с полными примерами API.
Cache Reserve Eligibility
Cache Reserve Eligibility позволяет указать, какие ресурсы сайта могут попадать в наш постоянный кеш под названием Cache Reserve. Если запрос соответствует и также удовлетворяет критерии соответствия, Cloudflare запишет ресурс в Cache Reserve. Для этого требуется дополнительный план Cache Reserve.
Это правило также можно использовать для определения пригодности ресурсов сайта для Cache Reserve на основе их размера. Например, если указать, что для участия подходят ресурсы объёмом от 100 МБ, Cloudflare будет искать подходящие для Cache Reserve ресурсы объёмом от 100 МБ и постоянно сохранять только их.
Информация об API
Имя объекта конфигурации API: "cache_reserve".
Имя свойства API для включения Cache Reserve: "eligible" (логическое значение).
"action_parameters": {
"cache": true
"cache_reserve": {
"eligible": true,
"minimum_file_size": 100000
}
}См. Создание правила кеширования через API с полными примерами API.
Кеширование на порту (только Enterprise)
Cloudflare поддерживает несколько сетевые порты по умолчанию, например 80 или 443. Некоторые порты, традиционно административные, поддерживаются, но кеширование на них отключено, поскольку они используются для управления конфиденциальной информацией, которая не должна кешироваться. Клиентам на тарифе Enterprise, которые хотят включить кеширование на этих административных портах, достаточно указать нужный порт.
Информация об API
Имя свойства конфигурации API: "additional_cacheable_ports" (массив целочисленных значений).
"action_parameters": {
"cache": true
"additional_cacheable_ports": [8443, 8080]
}
}См. Создание правила кеширования через API с полными примерами API.
Proxy Read Timeout (только для Enterprise)
Задает значение тайм-аута между двумя последовательными операциями чтения с вашего исходного сервера. Значение по умолчанию можно найти в Лимиты подключений в таблице. Если вы пытаетесь уменьшить HTTP 524 ошибки из-за тайм-аутов от исходного сервера, попробуйте увеличить значение тайм-аута с помощью конечной точки API ниже.
Информация об API
Имя свойства конфигурации API: "read_timeout" (целое число).
"action_parameters": {
"cache": true,
"read_timeout": 900
}См. Создание правила кеширования через API с полными примерами API.
Показ устаревшего контента во время ревалидации
Определяет, будет ли Cloudflare отдавать устаревшее содержимое во время обновления актуального содержимого с исходного сервера. Если отдача устаревшего содержимого отключена, Cloudflare не отдает его при получении актуального содержимого с источника.
Информация об API
Имя свойства конфигурации API: "serve_stale" > "disable_stale_while_updating" (логическое значение).
"action_parameters": {
"cache": true,
"serve_stale": {
"disable_stale_while_updating": true
}
}См. Создание правила кеширования через API с полными примерами API.
Respect Strong ETags
Включение и отключение побайтовой проверки соответствия между кешем Cloudflare и исходным сервером. Если параметр включен, Cloudflare использует строгий ETag заголовка, чтобы убедиться, что ресурсы в кеше Cloudflare и на исходном сервере идентичны побайтово. Если эта проверка отключена, Cloudflare преобразует заголовки ETag в слабый ETag заголовки.
Информация об API
Имя свойства конфигурации API: "respect_strong_etags" (логическое значение).
"action_parameters": {
"cache": true,
"respect_strong_etags": true
}См. Создание правила кеширования через API с полными примерами API.
Сквозная передача страницы ошибки источника
Включение и отключение страниц ошибок Cloudflare, создаваемых на основе кодов состояния HTTP, полученных от исходного сервера. Если параметр включен, используются страницы ошибок, предоставленные исходным сервером.
Информация об API
Имя свойства конфигурации API: "origin_error_page_passthru" (логическое значение).
"action_parameters": {
"cache": true,
"origin_error_page_passthru": true
}См. Создание правила кеширования через API с полными примерами API.
Origin Cache Control (только для Enterprise)
Если эта опция включена, Cloudflare стремится строго соблюдать RFC 7234 ↗. Клиенты на плане Enterprise могут выбирать, должен ли Cloudflare следовать этому поведению. У клиентов на планах Free, Pro и Business эта опция включена по умолчанию и не может быть отключена.
Информация об API
Имя свойства конфигурации API: "origin_cache_control" (логическое значение).
"action_parameters": {
"cache": true
"origin_cache_control": true
}См. Создание правила кеширования через API с полными примерами API.
Vary
Vary заголовок ответа позволяет вашему источнику кешировать несколько версий одного URL-адреса на основе заголовков запроса. Используйте vary объект, чтобы настроить, как Cloudflare обрабатывает каждый заголовок, который ваш источник указывает в своём Vary ответ. О том, как Vary влияет на ключи кеша и как работает нормализация, см. Vary.
vary объект поддерживает следующие ключи:
| Ключ | Обязательный | Описание |
|---|---|---|
default |
Да | Настройка для любого имени заголовка в источнике Vary ответ, не включенный в headers. |
headers |
Нет | Сопоставление имён заголовков запроса в нижнем регистре с объектами конфигурации. |
Если vary объект опущен, эта настройка Vary в правилах кеширования отключена. Другое поведение Vary, например Vary: *, Vary for images, и обработку сжатия, не затрагивается. Если vary объект присутствует, default обязателен. Пустой vary объект недействителен.
Каждый объект конфигурации заголовка, а также default объект должен включать action с ключом, установленным на одно из normalize, passthrough, или bypass. См. Действия с рекомендациями о том, когда использовать каждый из вариантов.
Для некоторых имён заголовков можно указать дополнительные параметры:
| Header | Дополнительный ключ | Описание |
|---|---|---|
accept |
media_types |
Список MIME-типов, которые нужно учитывать при нормализации Accept заголовок. Максимум 10 элементов. |
accept-language |
languages |
Список языков, которые нужно учитывать при нормализации Accept-Language заголовок. Максимум 20 элементов. |
Для большинства конфигураций начните с ограничивающего default и явную настройку по отдельным заголовкам:
- Используйте
defaultимеет значениеbypassчтобы не кешировать варианты для неожиданных значений источникаVaryзаголовки. - Добавьте явный
headersзаписи для заголовков, по которым источник, как вы ожидаете, формирует разные варианты ответа. - Используйте
normalizeдляaccept,accept-language, а такжеaccept-encodingесли только вашему источнику не требуются необработанные значения заголовков. - Используйте
media_typesиlanguagesсписки разрешений, когда вы точно знаете, какие варианты может отдавать ваш источник. - Используйте
passthroughтолько тогда, когда точные необработанные значения заголовков должны выбирать разные кешированные версии. - Используйте
bypassдля заголовков с высокой кардинальностью, таких какuser-agent, cookie или заголовки запроса с индивидуальными для пользователя значениями.
Действуют следующие ограничения и правила проверки:
- Имена заголовков в
headersдолжен быть в нижнем регистре. - Имена заголовков могут содержать буквы, цифры, символы подчеркивания и дефисы.
- Имена заголовков не могут превышать 128 символов.
- Имена заголовков, начинающиеся с
cf-илиcf_не допускаются. - Некоторые заголовки hop-by-hop или cache-control, например
connection,host, а такжеcache-control, не допускаются. headersможет содержать до 50 записей.accept.media_typesможет содержать до 10 записей.accept-language.languagesможет содержать до 20 записей.- Значения в
media_typesиlanguagesдолжен быть непустой печатаемой строкой ASCII.
Информация об API
Имя объекта конфигурации API: "vary".
В следующем примере нормализуется accept и accept-language, и обходит кеш для любого другого заголовка в источнике Vary ответ:
"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"]
}
}
}
}См. Создание правила кеширования через API с полными примерами API или Пример Terraform.