← Cloudflare Cache / cache / how-to
Ключи кеша
Ключ кеша представляет собой идентификатор, который Cloudflare использует для файла в своём кеше, а шаблон ключа кеша (Cache Key Template) определяет этот идентификатор для конкретного HTTP запроса.
Ключ кеша по умолчанию включает:
- Полный URL:
- схема, то есть HTTP или HTTPS.
- узел - например,
www.cloudflare.com - URI со строкой запроса, например,
/logo.jpg?utm_source=newsletter
- Заголовок Origin, отправляемый клиентом (для поддержки CORS).
x-http-method-override,x-http-method, а такжеx-method-overrideзаголовки.x-forwarded-host,x-host,x-forwarded-scheme(кроме http или https),x-original-url,x-rewrite-url, а такжеforwardedзаголовки.
Создание пользовательских ключей кеша
Custom cache keys позволяют точно задать параметр кешируемости для любого ресурса. Они дают больше контроля, но могут снижать долю попаданий в кеш и приводить к шардингу кеша:
-
На панели управления Cloudflare перейдите к разделу Cache Rules страницу.
Перейдите в Cache Rules ↗ -
Выберите Создать правило.
-
В разделе Когда входящие запросы соответствуют, задайте выражение правила.
-
В разделе Затем, в Допустимость кеширования разделе выберите Подлежит кешированию.
-
Добавьте Cache Key настройку к правилу и выберите подходящий Query String параметр.
-
Также можно выбрать настройки для Headers, Cookie, Host, а также Пользователь.
-
Чтобы сохранить и развернуть правило, выберите Развернуть. Если вы ещё не готовы развернуть правило, выберите Save as Draft.
Шаблон Cache Key
Есть несколько распространённых причин изменить Cache Key Template. Вы можете изменить Cache Key Template, чтобы:
- Фрагментируйте кэш так, чтобы один URL хранился в нескольких файлах. Например, чтобы хранить разные файлы в зависимости от определённой строки запроса в URL.
- Объедините кеш так, чтобы разные HTTP-запросы сохранялись в одном файле. Например, чтобы убрать заголовок Origin, который Cloudflare по умолчанию добавляет в Cache Keys.
Влияние настроек SSL на поведение кеша
Cloudflare $scheme переменная играет ключевую роль в поведении кеша, но её значение различается в зависимости от типа ключа кеша:
-
Default Cache Key:
$schemeуказывает на схема источника протокол, который Cloudflare использует для подключения к исходному серверу (HTTP или HTTPS). При такой конфигурации изменения настроек SSL (например, переключение с Flexible на Full) меняют схему источника. Поскольку ключ кэша включает схему источника, такие изменения приводят к сбросу кэша, и Cloudflare заново запрашивает содержимое у источника. -
Custom Cache Key:
$schemeуказывает на схема посетителя протокол, который клиент использует для запроса к Cloudflare. В этом случае изменения настроек SSL не влияют на ключ кэша, если только схема источника явно не включена в вашу пользовательскую конфигурацию.
Например, при использовании Flexible SSL Cloudflare всегда подключается к источнику по HTTP, независимо от того, использует ли посетитель HTTP или HTTPS. При настройках по умолчанию это приводит к одинаковому cache key для обоих протоколов.
Учитывайте, что изменение настройки SSL может приводить к сбросу кэша при использовании ключа кэша по умолчанию:
-
Переход с Off к Full, Full (strict), или Строгий меняет схему источника с HTTP на HTTPS, что приводит к сбросу кеша.
-
Переход с Flexible к Full, Full (strict), или Строгий аналогичным образом меняет схему источника на HTTPS и приводит к сбросу кеша.
Как работает $scheme взаимодействует с вашей конфигурацией кэширования, важно понимать при изменении режимов SSL, чтобы избежать непредвиденного поведения кэша.
Cache Level: Ignore Query String
Cache Level Ignore Query String создает ключ кеша, включающий все элементы ключа кеша по умолчанию, за исключением строки запроса в URI, которая больше не включается. Например, запрос для http://example.com/file.jpg?something=123 и запрос для http://example.com/file.jpg?something=789 в этом случае будут иметь одинаковый ключ кэша.
Настройки Cache Key
Следующие поля управляют Cache Key Template.
Query String
Строка запроса определяет, какие параметры URL попадают в Cache Key. Вы можете include конкретные параметры строки запроса или exclude их с помощью соответствующих полей. Если вы указываете параметр строки запроса, value параметра строки запроса используется в ключе кеша.
Пример
Если включить строку запроса foo в URL-адрес вида https://www.example.com/?foo=bar, то bar появляется в Cache Key. Ровно одно из include или exclude ожидается.
Примечания по использованию
- Чтобы включить все параметры строки запроса (поведение по умолчанию), используйте include:
"\*" - Чтобы игнорировать строки запроса, используйте exclude:
"\*" - Чтобы включить большинство параметров строки запроса, но исключить некоторые из них, используйте поле exclude, которое предполагает включение остальных параметров строки запроса.
Headers
Заголовки определяют, какие заголовки входят в Cache Key. Как и с Query String, здесь можно включать определённые заголовки или исключать заголовки по умолчанию.
Если вы добавляете заголовок, его значение включается в Cache Key. Например, если HTTP-запрос содержит HTTP-заголовок вида X-Auth-API-key: 12345, и вы включаете X-Auth-API-Key header в Cache Key Template, то 12345 отображается в Cache Key.
В Включать заголовки и выбранные значения разделе можно добавить имена заголовков и их значения в ключ кеша. Для пользовательских заголовков значения необязательны, но для следующих ограниченных заголовков необходимо указать от одного до 10 конкретных значений:
acceptaccept-charsetaccept-encodingaccept-datetimeaccept-languagerefereruser-agent
Чтобы проверить наличие заголовка без учёта его фактического значения, используйте Проверка наличия опцию.
В настоящее время можно исключить только Origin заголовок. Origin заголовок всегда включается, если явно не исключён. Включение Заголовок Origin ↗ в ключе кэша важно для обеспечения CORS ↗.
Кроме того, нельзя включать следующие заголовки:
- Заголовки, повторно реализующие функции кеша или прокси
connectioncontent-lengthcache-controlif-matchif-modified-sinceif-none-matchif-unmodified-sincerangeupgrade
- Заголовки, которые уже учитываются другими функциями Cache Key
cookiehost
- Заголовки, специфичные для Cloudflare, с префиксом
cf-, например,cf-ray - Заголовки, уже включённые в пользовательский шаблон Cache Key, например
origin
Host
Host определяет, какой заголовок host включается в Cache Key.
- Если
Use original host(resolved: falseв API), Cloudflare добавляетHostзаголовок в HTTP-запросе, отправляемом источнику. - Если
Resolved host(resolved: trueв API), Cloudflare добавляетHostзаголовок, который был обработан, чтобы получитьorigin IPдля запроса.Hostзаголовок может отличаться от фактически отправленного заголовка, если он был изменён с помощью Origin Rule.
Cookie
Подобно query_string или header, cookie определяет, какие cookie попадают в Cache Key. Вы можете включить значение cookie или просто проверять наличие определённого cookie.
Примечания по использованию
Нельзя включать cookie, специфичные для Cloudflare. Имена cookie Cloudflare начинаются с префикса __cf, например, __cflb
Функции User
Поля функции User добавляют в Cache Key характеристики конечного пользователя (клиента).
device_typeклассифицирует запрос какmobile,desktop, илиtabletна основе User Agentgeoвключает страну клиента, определённую по IP-адресуlangвключает первый код языка, указанный вAccept-Languageзаголовок, отправленный клиентом
Доступность
Доступность параметров ключа кеша зависит от вашего тарифного плана.
| Free | Pro | Business | Enterprise | |
|---|---|---|---|---|
| Cache Deception Armor | Да | Да | Да | Да |
| Кеширование по типу устройства | Да | Да | Да | Да |
| Ignore query string | Да | Да | Да | Да |
| Сортировка строки запроса | Да | Да | Да | Да |
| Строка запроса | Нет | Нет | Нет | Да |
| Headers | Нет | Нет | Нет | Да |
| Cookie | Нет | Нет | Нет | Да |
| Host | Нет | Нет | Нет | Да |
| Функции User | Нет | Нет | Нет | Да |
Устранение неполадок
Вы можете использовать Cloudflare Trace чтобы узнать, какие настройки Cache Key были применены к вашему запросу. Если вы отправляете запрос через инструмент Trace и он был обслужен из кеша, это отобразится как попадание в кеш в Параметры кеша раздел. Затем выберите Просмотр сведений о параметре чтобы точно увидеть, какие свойства Cache Key были использованы.
Ограничения
Предзагрузка функция несовместима с Custom Cache Keys. При Cache Rules, пользовательский cache key используется для кеширования всех ресурсов. Однако Prefetch всегда использует cache key по умолчанию. Из-за этого возникает несовпадение ключей.