Chromium добавляет No‑Vary‑Search в HTTP-дисковый кэш, позволяя дублировать кэш запросов с параметрами
Что произошло
- Chromium расширил поддержку No‑Vary‑Search в HTTP-дисковом кэше (теперь в стабильных сборках Chrome). Когда ответ содержит заголовок No‑Vary‑Search, браузер может повторно использовать кэшированную запись диска для URL, которые отличаются только указанными параметрами запроса, вместо повторной загрузки полного ресурса.
Почему это важно для полностековых команд
- Реальные загрузки страниц дублируются. Страницы, которые отличаются только параметрами аналитики/отслеживания (utm_*, gclid, fbclid и т. д.), могут обслуживаться из дискового кэша, что значительно ускоряет навигацию и снижает сетевые/ЦП затраты для пользователей.
- Лучшее повторное использование предварительной выборки/пререндеринга. Ранее повторное использование предварительной выборки/пререндеринга было ограничено; осведомленность о дисковом кэше позволяет спекулятивным выборкам чаще оправдывать себя.
- Снижение нагрузки и задержки на источнике/CDN. Меньше промахов по кэшу означает меньше обращений к источнику и меньше повторных проверок — хорошо для конечных точек с высоким трафиком.
- Поведенческий риск для страниц с тяжелым клиентом. Если ваше одностраничное приложение или рендеринг на клиенте зависит от наличия параметров поиска на первом отображении, пререндеренные или кэшированные ответы, обслуживаемые под No‑Vary‑Search, могут изначально показывать другой URL/параметры в location.href до активации — вы должны убедиться, что код клиента обновляется при активации.
Немедленный практический контрольный список (высокоэффективные шаги)
- Проверьте параметры запроса
- Перечислите все параметры запроса, которые ваше приложение получает. Классифицируйте как: (a) влияющие на сервер (должны изменять кэш), (b) только для клиента (безопасно игнорировать), (c) непредсказуемые/опасные.
- Начните с консервативного заголовка
- Используйте явные параметры: No‑Vary‑Search: params=("utm_source" "utm_medium" "utm_campaign" "fbclid" "gclid")
- Или используйте ключевой порядок или другие варианты только если вы полностью понимаете поведение сервера.
- Добавьте заголовок на источнике (или на краю CDN)
- Примеры (концептуальные):
- Express: res.setHeader('No‑Vary‑Search', 'params=("utm_source" "utm_medium")')
- Nginx (add_header) / правила пользовательских заголовков CDN
- Предпочитайте конфигурацию на краю/CDN, чтобы избежать изменений на источнике, где это возможно.
- Примеры (концептуальные):
- Тщательно протестируйте перед широким развертыванием
- Убедитесь, что обслуживаемый ресурс идентичен для URL, которые отличаются только игнорируемыми параметрами.
- Протестируйте потоки пререндеринга/предварительной выборки и навигации: убедитесь, что логика на стороне клиента, которая зависит от параметров URL, выполняется после активации (или повторно считывает параметры).
- Подтвердите, что аналитическая инструментировка по-прежнему захватывает правильный конечный URL/параметры (активация может изменить местоположение).
- Мониторьте метрики кэша и источника
- Отслеживайте коэффициент попадания в кэш, скорость запросов к источнику и любой трафик 304/валидации, связанный с кэшем, после развертывания.
- Учитывайте поведение CDN и промежуточных узлов
- Не все CDN или промежуточные узлы еще понимают No‑Vary‑Search. Если вы полагаетесь на кэши нижнего уровня, координируйтесь с поддержкой CDN или используйте заголовки источника/края осторожно.
- Стратегия развертывания
- Canary-заголовок для подмножества пользователей или путей и увеличивайте, как только метрики подтвердят ожидаемое поведение.
Советы по тестированию
- Панель сети DevTools: выполняйте загрузки с различными параметрами запроса и проверяйте "Дисковый кэш" как источник ресурса.
- Воспроизведите пререндеринг/используйте правила спекуляции, если вы полагаетесь на предварительную выборку: убедитесь, что активация создает правильное состояние приложения.
- Используйте серверные журналы, чтобы подтвердить идентичные ответы и обнаружить случайное повторное использование действительно изменяющегося контента.
Риски и подводные камни
- Неправильное обозначение параметра как игнорируемого может привести к обслуживанию неправильного контента (особенно для страниц, где параметры запроса изменяют ответ сервера).
- Время гидратации клиента: код клиента, который считывает параметры поиска при начальном отображении, может выполняться до активации, когда пререндеренная/кэшированная страница повторно используется — обновите код, чтобы обрабатывать события активации и повторно считывать параметры, где это необходимо.
- Охват браузеров: в настоящее время это поведение реализовано в браузерах на основе Chromium; другие браузеры могут вести себя иначе. Не предполагайте универсальное поведение без проверки поддержки браузеров для вашей аудитории.
Итог Перемещение No‑Vary‑Search в HTTP-дисковый кэш — это практическое, высокоэффективное изменение: при консервативном использовании оно снижает избыточные загрузки и улучшает производительность для реальных пользователей. Рассматривайте это как элемент развертывания для источника/CDN/инженерии — перечислите параметры, протестируйте поведение клиента вокруг пререндеринга/активации и увеличивайте постепенно.
Источник: Примечания к выпуску Chrome — Chrome 141: Поддержка No‑Vary‑Search для HTTP-дискового кэша.
Читать дальше
Svelte 5.52.0 добавляет поддержку TrustedHTML для {@html}, обеспечивая более безопасную интеграцию Trusted Types
21 февраля 2026 г.Svelte 5.52.0 (18 февраля 2026 г.) добавляет поддержку TrustedHTML для выражений {@html}, чтобы приложения могли взаимодействовать с браузерными Trusted Types без приведения к строке — важно для защиты от XSS в SSR и при рендеринге на клиенте.
Next.js 16 делает Turbopack стабильным и дефолтным для разработки и сборки
20 февраля 2026 г.Next.js 16 переводит Turbopack в стабильную/дефолтную настройку, поднимает минимальную версию Node.js и внедряет примитивы кэширования, ориентированные на продакшн — что должны изменить команды full‑stack прямо сейчас.
Vite 8.0.0‑beta.14 добавляет поддержку .wasm?init на стороне сервера (WASM SSR) и обновляет Rolldown до 1.0.0‑rc.4
19 февраля 2026 г.Бета‑версия Vite от 12 февраля 2026 года вводит поддержку SSR для предварительно инициализированных модулей WebAssembly и обновляет интеграцию Rolldown до 1.0.0‑rc.4 — практическое изменение, которое снижает нагрузку на гидратацию на клиенте и улучшает стабильность инструментов для серверных рендеров с интенсивным использованием Wasm.