
Текстовые ресурсы — HTML, CSS, JavaScript, SVG, шрифты в формате woff2 уже сжаты, но самые «тяжёлые» по объёму на сайте — это HTML и JS. Их сервер может сжимать перед отправкой, а браузер автоматически распаковывает. Gzip это умеет с конца 90-х, Brotli появился в 2015 году и сегодня поддерживается всеми актуальными браузерами.
01Зачем сжатие на сервере
HTML-страница типичного сайта малого бизнеса весит 50–200 КБ. CSS и JS могут добавлять ещё столько же или больше. Без сжатия всё это уходит «как есть» по сети. С Gzip размер обычно падает в 3–5 раз, с Brotli — ещё на 15–25% относительно Gzip.
Что это даёт пользователю: страница быстрее догружается, особенно на мобильном интернете. Что это даёт владельцу: меньший расход трафика, меньшая нагрузка на канал. Что это даёт SEO: лучше метрики скорости и Core Web Vitals — об этом подробнее в материале «Как ускорить загрузку сайта».
02Чем Gzip отличается от Brotli
Оба алгоритма работают по одному принципу: ищут повторяющиеся последовательности в файле и заменяют их короткими ссылками. Разница — в эффективности и скорости.
Gzip
Старый, проверенный, поддерживается абсолютно всеми браузерами и серверами. Сжимает быстро, степень сжатия — средняя. Уровень сжатия настраивается от 1 до 9: 1 — быстро, плохо, 9 — медленно, хорошо.
Brotli
Разработан Google, использует расширенный словарь и более сложный алгоритм. На HTML и текстах даёт ощутимо лучшее сжатие — обычно на 15–25% компактнее, чем Gzip. На уровнях 9–11 уступает по скорости компрессии, но при кэшированных файлах это не важно. Уровни 1–11, оптимальный для динамического сжатия — 4–5.
Поддержка Brotli в браузерах: Chrome, Edge, Firefox, Safari, Яндекс.Браузер. Все они посылают серверу заголовок Accept-Encoding: gzip, br, и если сервер умеет — отдаёт сжатую Brotli версию.
03Какую разницу это даёт на реальном сайте
Возьмём учебный пример: HTML главной страницы лендинга 120 КБ. После Gzip — около 25 КБ. После Brotli — около 19 КБ. Разница 6 КБ кажется небольшой, но это уже минус 5–10% к времени загрузки на медленном мобильном интернете, а на десятках ресурсов сумма ощутимая.
На статике (CSS, JS) Brotli обычно даёт меньший выигрыш, чем на HTML, особенно если файлы уже минифицированы. Но из коробки в сборках Brotli работает лучше, чем Gzip, на любых текстовых файлах. О минификации мы писали в материале «Минификация JS и CSS» — связка «минификация + Brotli» даёт максимум.
На текстовом контенте Brotli стабильно компактнее Gzip. На бинарных файлах (картинки, видео) ни тот, ни другой не нужны.
04Что включать: Gzip, Brotli или оба
Правильный ответ — оба. Сервер должен уметь отдавать обе версии в зависимости от того, что поддерживает клиент. Brotli — приоритетно, Gzip — как fallback для устаревших клиентов и для некоторых корпоративных прокси, которые блокируют Brotli.
Типичная конфигурация:
- Включить Gzip для всех текстовых типов (text/html, text/css, application/javascript, application/json, application/xml, image/svg+xml).
- Включить Brotli с теми же типами.
- Не сжимать уже сжатые форматы: JPEG, PNG, WebP, AVIF, MP4, ZIP, PDF — это бесполезно и даёт нагрузку на CPU.
- Установить минимальный размер для сжатия (например, 1 КБ) — крошечные файлы сжимать не имеет смысла.
05Как настроить на популярных серверах
Nginx
Gzip встроен в стандартную сборку. Brotli — отдельный модуль (ngx_brotli), который добавляется при компиляции или подключается через готовые пакеты. Российские хостинги Beget, REG.RU, Timeweb обычно уже имеют Brotli «из коробки». Включается двумя-тремя директивами в конфиге сайта.
Apache
Gzip работает через mod_deflate. Brotli — через mod_brotli. На большинстве шаред-хостингов оба модуля включены, достаточно прописать правила в .htaccess.
WordPress
Если хостинг не делает сжатие на уровне веб-сервера, плагины кэширования (LiteSpeed Cache, WP Rocket) умеют это включать. Но всегда лучше делать сжатие на стороне сервера — это быстрее и надёжнее.
CDN
Большинство CDN автоматически отдают контент с Brotli, если клиент поддерживает. Если у вас уже подключён CDN — половина работы сделана.
06Как проверить, что сжатие работает
Самый простой способ — открыть DevTools, вкладка Network, открыть любой текстовый ресурс (HTML, CSS, JS) и посмотреть Response Headers. Там должна быть строка Content-Encoding: br (для Brotli) или gzip (для Gzip). Если её нет — сжатие не работает.
Внешние инструменты вроде PageSpeed Insights отдельно подсвечивают пункт «Включите сжатие текста» — если он горит, на сайте нет ни Gzip, ни Brotli, и это надо чинить в первую очередь.
Дополнительно проверьте, что сжатие включено и для динамических страниц (HTML, генерируемый PHP), а не только для статики. Это частая ошибка: статика жмётся, а сам HTML — нет.
Сжатие — обязательная часть базовой настройки
При разработке сайта мы сразу включаем Gzip и Brotli на стороне сервера или CDN. В подписке проверяем, что сжатие не «сбилось» после обновления хостинга или CMS.
Официальная документация по теме — Справка Яндекс.Вебмастера.
