Назад
Cloudflare додала підтримку Vary у Cache Rules для всіх тарифів
SiTech AI Team2 წთ. საკითხავი

Cloudflare додала підтримку Vary у Cache Rules для всіх тарифів

Cloudflare додала підтримку заголовка відповіді Vary у Cache Rules на всіх тарифах, зокрема безкоштовному. Джерело оголошує, які поля запиту впливають на відповідь, але оператор сам обирає для кожного заголовка: нормалізувати, передати точно чи не кешувати.

Cloudflare додала підтримку заголовка відповіді HTTP Vary у Cache Rules. Функція доступна на всіх тарифах, зокрема й безкоштовному. У блозі компанії Vary називають «найпотворнішою частиною HTTP, яку досі не вдосконалили» — вислів узятий із тексту Марка Ноттінгема.

Заголовок існує тому, що один URL може мати кілька правильних відповідей: сервер надсилає різним клієнтам різні мови, формати зображень чи схеми стиснення. Кеш, який ігнорує Vary, може віддати API-клієнту HTML, а браузеру — JSON; а кеш, який вважає кожне сире значення окремим, розсипає одну придатну до повторного використання відповідь на тисячі майже ідентичних варіантів.

Діаграма: один URL із кількома поданнями та вплив Vary на кеш

Чого Vary не каже

Vary повідомляє кешу, які поля запиту можуть впливати на відповідь, але не пояснює, що ця відповідь являє собою. Приклад Cloudflare: джерело обслуговує англійську, французьку та німецьку, а два клієнти надсилають Accept-Language: en-US, fr;q=0.8 та Accept-Language: fr;q=0.8, en-GB. Обидва надають перевагу англійській і можуть отримати однакові байти, проте кеш, порівнюючи сирі значення, зберігає їх як окремі варіанти.

Проблема зростає з кількістю полів: десять значень в одному полі — це десять варіантів, а десять значень у трьох полях — тисяча комбінацій. Аналіз понад 120 мільйонів відповідей із майже 50 000 сайтів показав, що близько 3 000 із них варіюються за чотирма чи більше полями, а деякі — за 10, 23 або навіть 47.

Три дії: normalize, passthrough, bypass

У новій моделі джерело, як і раніше, називає заголовки в Vary, а Cache Rule вирішує, як Cloudflare поводиться з кожним. normalize — рекомендований варіант за замовчуванням — переписує значення Accept, Accept-Language та Accept-Encoding перед зіставленням із кешем: зводить регістр і сортує за значенням якості, щоб еквівалентні запити ділили одну відповідь. passthrough зберігає сирі байти, включно з регістром, пробілами, порядком і дублікатами, для заголовків, де точне значення змінює відповідь. bypass не зберігає відповідь взагалі, якщо джерело називає цей заголовок у Vary; він призначений для Cookie та User-Agent. Відповідь із Vary: * не зберігається ніколи.

Налаштування та застереження

Параметри Vary містяться в Cache Rules (у панелі — Caching > Cache Rules) і доступні також через Rulesets API у фазі http_request_cache_settings та через Terraform. Cloudflare наголошує: відповідальність залишається на джерелі — кожна кешована відповідь, що може відрізнятися за полями запиту, має послідовно повертати належний заголовок Vary, зокрема для помилок. Зміна правила не очищає наявні записи автоматично: старі варіанти живуть до завершення строку дії або очищення, а очищення ресурсу охоплює всі його варіанти Vary.

SSiTech

SiTech — веброзробка з підтримкою AI

Створюємо швидкі та сучасні сайти й інтегруємо AI у бізнес-процеси. Маєте проєкт чи запитання? Із задоволенням допоможемо.