Перейти к содержимому
Skip to content
← Все статьи

Gzip vs Brotli: сравнение веб-компрессии

Почему компрессия важна

Каждый байт, переданный по сети, стоит времени. JavaScript-бандл 500 КБ загружается 100 мс на соединении 40 Мбит/с — но сжатый до 150 КБ с Brotli загружается всего 30 мс. Умножьте на все ресурсы (HTML, CSS, JS, JSON, SVG) — компрессия может сократить время загрузки на 50–70%.

Веб-компрессия находит избыточные паттерны в текстовых файлах и заменяет их короткими представлениями. И Gzip, и Brotli — без потерь: оригинальные данные идеально восстанавливаются на стороне клиента. Браузер указывает поддерживаемые кодировки через Accept-Encoding, сервер отвечает сжатой версией.

Gzip: устоявшийся стандарт

Gzip — стандартная веб-компрессия с середины 1990-х. Использует алгоритм DEFLATE (комбинация LZ77 и кодирования Хаффмана). Поддерживается всеми браузерами, серверами, CDN и прокси.

# Nginx: настройка Gzip
gzip on;
gzip_vary on;
gzip_proxied any;
gzip_comp_level 6;
gzip_min_length 256;
gzip_types
    text/plain
    text/css
    text/javascript
    application/javascript
    application/json
    application/xml
    image/svg+xml;

Уровни компрессии от 1 (быстрый, слабое сжатие) до 9 (медленный, максимальное сжатие). Уровень 6 — оптимальный баланс между степенью сжатия и нагрузкой на CPU.

Brotli: современная альтернатива

Brotli разработан Google и выпущен в 2015 году. Использует LZ77, кодирование Хаффмана и предустановленный словарь типичного веб-контента (HTML-теги, CSS-свойства, ключевые слова JavaScript). Этот словарь даёт Brotli значительное преимущество именно для веб-контента.

# Nginx: настройка Brotli (требует модуль ngx_brotli)
brotli on;
brotli_comp_level 6;
brotli_min_length 256;
brotli_types
    text/plain
    text/css
    text/javascript
    application/javascript
    application/json
    application/xml
    image/svg+xml;

Уровни Brotli от 0 до 11. Уровни 0–4 сопоставимы по скорости с Gzip. 5–9 значительно медленнее, но дают меньший размер. 10–11 — очень медленные, только для статической пре-компрессии.

Сравнение

ХарактеристикаGzipBrotli
АлгоритмDEFLATE (LZ77 + Хаффман)LZ77 + Хаффман + статический словарь
Степень сжатияХорошая (базовый уровень)На 15–25% лучше Gzip
Скорость сжатияБыстрая на всех уровняхБыстрая на 0–4, медленная на 10–11
Скорость декомпрессииБыстраяСопоставимая с Gzip
Поддержка браузерами100%97%+ (все современные)
Требуется SSL/TLS проверкуНетДа (браузеры поддерживают только через HTTPS)
Content-Encodinggzipbr

Реальные результаты сжатия

Тип файлаОригиналGzip (ур. 6)Brotli (ур. 6)Brotli (ур. 11)
jQuery 3.7 (min)87 КБ30 КБ (66%)27 КБ (69%)25 КБ (71%)
Bootstrap CSS (min)161 КБ23 КБ (86%)19 КБ (88%)17 КБ (89%)
HTML-страница (средн.)50 КБ12 КБ (76%)10 КБ (80%)9 КБ (82%)
JSON API документацию-ответ100 КБ15 КБ (85%)12 КБ (88%)11 КБ (89%)

Статическая пре-компрессия

Для статических ассетов (CSS, JS, SVG) сжимайте файлы при сборке с максимальной степенью. Сервер отдаёт пре-сжатый файл без компрессии на каждый запрос:

# Пре-компрессия при сборке
gzip -9 -k dist/app.js        # Создаёт app.js.gz
brotli -q 11 dist/app.js      # Создаёт app.js.br

# Nginx автоматически отдаёт пре-сжатые файлы
gzip_static on;    # Отдавать .gz если существует
brotli_static on;  # Отдавать .br если существует

Лучшее из обоих миров: максимальная степень сжатия (Brotli уровень 11) без нагрузки на CPU при отдаче. Пайплайн сборки должен генерировать и .gz, и .br версии каждого статического ассета.

Что НЕ нужно сжимать

Лучшие практики настройки

Проверка компрессии

# Проверка с помощью curl
curl -I -H "Accept-Encoding: br,gzip" https://example.com/
# Ищите: Content-Encoding: br (или gzip)

# Используйте проверку HTTP-заголовков в Enterno.io
# для верификации Content-Encoding на любом URL

Заключение

Brotli — лучший выбор для веб-компрессии: даёт файлы на 15–25% меньше Gzip для типичного веб-контента с сопоставимой скоростью декомпрессии. Используйте Brotli как основную кодировку с Gzip как запасной. Пре-сжимайте статику на максимальном уровне, используйте умеренные уровни для динамического контента и всегда проверяйте активность компрессии через заголовки ответов. Эта единственная оптимизация может значительно сократить расход трафика и улучшить время загрузки.

Проверьте ваш сайт прямо сейчас

Проверить →
Другие статьи: Производительность
Производительность
Оптимизация изображений для веба
14.03.2026 · 16 просм.
Производительность
Оптимизация доставки контента: стратегии CDN и граничные вычисления
16.03.2026 · 12 просм.
Производительность
Latency и Throughput: ключевые метрики производительности сети
16.03.2026 · 32 просм.
Производительность
Инвалидация кеша CDN: стратегии доставки свежего контента
16.03.2026 · 17 просм.