Сжатие (Gzip, Brotli)

Методы сжатия текстовых файлов (HTML, CSS, JS) для ускорения загрузки страниц. Brotli эффективнее Gzip на 15–20%.

Кратко

Сжатие (compression) — это процесс уменьшения размера текстовых ресурсов на сервере перед отправкой браузеру, который затем автоматически распаковывает их. Наиболее распространены алгоритмы Gzip и Brotli. Включённое сжатие может сократить размер HTML, CSS, JavaScript на 60–70%, что напрямую влияет на LCP и общую скорость загрузки.

Что такое сжатие

Сжатие — это техника, при которой сервер перед отправкой файла браузеру упаковывает его в более компактный формат. Браузер получает сжатый файл, декодирует его и использует. Это сокращает время передачи данных по сети, особенно на медленных соединениях. Для текстовых файлов (HTML, CSS, JS, JSON, шрифты в формате WOFF) выигрыш может составлять 60–80%.

Сравнение Gzip и Brotli

Gzip — стандартный алгоритм, поддерживается практически всеми серверами и браузерами. Brotli — более современный, разработанный Google, обеспечивает лучшее сжатие на 10–20%, но может быть чуть медленнее при упаковке. Brotli особенно хорош для текста и шрифтов.

АлгоритмСтепень сжатияСкорость распаковкиПоддержка браузерами
Без сжатия100%100%
Gzip~30–40% от исходногоБыстро99%+
Brotli~20–30% от исходногоСредняя96%+

Современная рекомендация: включать Brotli для HTTPS-трафика и оставлять Gzip как fallback для старых клиентов.

Что и что не нужно сжимать

  • Сжимать: HTML, CSS, JavaScript, JSON, XML, SVG (без потерь), файлы шрифтов WOFF/WOFF2 (ещё дополнительно), текстовые ответы API.
  • Не сжимать: Уже сжатые форматы — JPEG, PNG, WebP, MP4, WebM, ZIP (двойное сжатие не даёт выигрыша и только тратит ресурсы).

Как включить сжатие (настройки сервера)

Настройка зависит от вашего веб-сервера.

NGINX
# Nginx: включение Brotli (требуется модуль ngx_brotli)
brotli on;
brotli_types text/plain text/css application/json application/javascript text/xml;
brotli_min_length 1000;

# Gzip (как fallback)
gzip on;
gzip_vary on;
gzip_types text/plain text/css application/json application/javascript text/xml;
gzip_min_length 1000;
APACHE
# Apache (.htaccess)
<IfModule mod_deflate.c>
  AddOutputFilterByType DEFLATE text/html text/plain text/css application/json application/javascript text/xml
  <IfModule mod_brotli.c>
    AddOutputFilterByType BROTLI text/html text/plain text/css application/json application/javascript text/xml
  </IfModule>
</IfModule>

Как проверить, работает ли сжатие

  • Chrome DevTools → Network → выберите запрос → Headers → Response Headers → `Content-Encoding: br` (Brotli) или `gzip`.
  • PageSpeed Insights — рекомендует включить сжатие, если оно отключено.
  • Онлайн-сервисы — например, CheckGzipCompression.com.
  • Команда curl — `curl -H "Accept-Encoding: br" -I https://example.com/style.css`
BASH
# Проверка через curl
curl -s -I -H "Accept-Encoding: gzip, deflate, br" https://example.com | grep -i content-encoding
Включение сжатия — одна из самых простых и действенных оптимизаций. В большинстве случаев это улучшает метрики Core Web Vitals (LCP, FCP) и оценки PageSpeed Insights.

Частые вопросы

Brotli обеспечивает лучшее сжатие (файлы на 15–25% меньше). Gzip быстрее сжимает и более совместим. Рекомендуется включать оба (Brotli в приоритете, Gzip — fallback).
Возможно, вы не настроили правильные MIME-типы или файлы уже сжаты (например, изображения). Проверьте заголовки Content-Encoding.
Да, сжатие применимо к любому текстовому выводу, будь то статический файл или сгенерированный ответ. Включите сжатие на уровне сервера для всех соответствующих типов.
Уменьшение размера HTML, CSS, JS сокращает время загрузки, что положительно влияет на LCP (крупный контент быстрее появляется) и FCP. Особенно заметно на мобильных устройствах.
Да, JSON – текст, сжатие сокращает объём передаваемых данных, ускоряя AJAX‑запросы и улучшая воспринимаемую производительность.
Прямые контакты

Обсудим ваш проект?

Расскажите о целях и сайте — предложу формат работы и следующий шаг.

Сжатие (Gzip, Brotli) — что это такое?