Vary: разделение вариантов ответа в HTTP-кеше
Заголовок Vary сообщает кешу, какие поля запроса влияют на выбор представления. Один адрес может отдавать разные варианты, и повторно использовать их нужно с учётом этих различий.
Назначение
Заголовок Vary сообщает кешу, какие поля запроса влияют на выбор представления. Один адрес может отдавать разные варианты, и повторно использовать их нужно с учётом этих различий.
Как это работает
Например, Vary:Accept-Encoding показывает зависимость представления от поддерживаемого сжатия. Кеш учитывает перечисленные значения при сопоставлении нового запроса с сохранённым ответом. Vary не устанавливает время хранения.
Пример
HTTP/1.1 200 OK
Content-Type: text/css
Content-Encoding: gzip
Vary: Accept-Encoding
Cache-Control: public, max-age=600
[Далее находится сжатое тело CSS]
Что должно получиться
Ответ описывает сжатый вариант публичного файла со сроком свежести. Кеш не должен считать его подходящим для любого запроса только потому, что URL совпадает; важна поддержка соответствующего кодирования.
Граница применения и частая ошибка
Не добавляйте все возможные заголовки в Vary: большое число комбинаций снижает пользу кеша. Vary:Cookie не заменяет private или no-store для персональных данных. Правила конкретного CDN могут ограничивать поддерживаемые варианты.
При сравнении CDN для статических файлов уточняйте поддержку Vary, состав ключа кеша и способ очистки. Название услуги не гарантирует, что нужный заголовок учитывается автоматически.
Самостоятельная проверка
Проверьте ответы своего сервера на два варианта Accept-Encoding. Сравните Content-Encoding, Vary и Cache-Control, затем повторите опыт через используемый кеш. Не используйте чужие персональные ответы для такой проверки.