Gzip и Brotli для HTML и JSON: что включать на CDN и origin
Типы контента, для которых сжатие окупается, взаимодействие с кэшем и почему бинарники сжимать бессмысленно.
Текстовые ответы (HTML, CSS, JS, SVG, JSON) обычно хорошо сжимаются; изображения и архивы уже сжаты — повторное gzip лишь тратит CPU.
Brotli часто даёт лучший коэффициент, чем gzip, но может быть дороже по CPU на краю — типичный компромисс: статика предсжатая на билде, динамика через nginx/CDN с разумным уровнем.
- Accept-Encoding — MDN — Согласование алгоритма с клиентом.
- Content-Encoding — MDN — Как помечать сжатый ответ.
Кэш и Vary
Если отдаёте разные тела в зависимости от `Accept-Encoding`, корректно выставляйте `Vary: Accept-Encoding`, иначе промежуточный кэш может отдать несовместимый формат.
Проверяйте TTFB после включения сжатия на слабом железе — иногда узкое место смещается в CPU.