Brotli: что это и чем лучше Gzip

Brotli — современный алгоритм сжатия от Google, заменяющий Gzip. Сжимает HTML/CSS/JS на 20-30% лучше. Поддерживается всеми современными браузерами.

brotliсжатиепроизводительностьhttpgzip

Что такое Brotli

Brotli — алгоритм сжатия данных без потерь, разработанный Google в 2015 году. Изначально создан для сжатия шрифтов WOFF2, затем был открыт для использования в HTTP-сжатии. В HTTP-протоколе обозначается кодом br.

Brotli сжимает текстовые данные на 20-30% эффективнее Gzip при сопоставимой скорости декомпрессии.

Brotli vs Gzip: сравнение

| Параметр | Gzip | Brotli | |----------|------|--------| | Степень сжатия HTML | 75% | 82% | | Степень сжатия JS | 70% | 78% | | Поддержка браузерами | 100% | ~96% (все современные) | | Поддержка HTTPS | HTTP и HTTPS | Только HTTPS | | Скорость декомпрессии | Быстрая | Сопоставима с Gzip |

Как работает Brotli

Brotli использует улучшенную версию алгоритма LZ77, Хаффманово кодирование и предопределённый словарь (контекстное моделирование). Встроенный словарь содержит общие слова и конструкции HTML, JS, CSS — что особенно эффективно для веб-контента.

Как включить Brotli

Nginx (модуль ngx_brotli)

brotli on;
brotli_comp_level 6;
brotli_types
    text/plain
    text/css
    application/javascript
    application/json
    image/svg+xml;

Для установки модуля:

apt install libnginx-mod-brotli
# В nginx.conf:
load_module modules/ngx_brotli.so;

Cloudflare

Cloudflare автоматически применяет Brotli к совместимым браузерам при включённом proxy. Настройки в Dashboard → Speed → Optimization.

Node.js

const shrinkRay = require('shrink-ray-current');
app.use(shrinkRay()); // поддерживает и Brotli и Gzip

Или через iltorb (официальная Node.js Brotli привязка):

const { createBrotliCompress } = require('zlib');

Node.js 10.16+ включает нативный Brotli через модуль zlib.

Уровни сжатия Brotli

Brotli поддерживает уровни сжатия от 0 до 11:

  • Уровень 1-4 — быстрое сжатие, для динамического контента
  • Уровень 5-6 — баланс скорости и сжатия (рекомендуется)
  • Уровень 9-11 — максимальное сжатие, медленно (для статики с кешем)

Для динамических HTML-страниц: уровень 4. Для статических файлов: уровень 11 (кешируется, поэтому CPU cost однократный).

Проверка Brotli на reChecker

Используйте HTTP/2 & Brotli для проверки поддержки Brotli на вашем сайте. Инструмент отправит запрос с Accept-Encoding: br, gzip и покажет:

  • Используемый алгоритм сжатия (br / gzip / deflate / none)
  • Версию HTTP протокола
  • Заголовки кеширования

FAQ

Если Brotli лучше Gzip, нужно ли оставлять Gzip? Да. IE, старые браузеры и некоторые прокси-серверы не поддерживают Brotli. Сервер должен поддерживать оба варианта и выбирать по заголовку Accept-Encoding браузера.

Brotli работает по HTTP без SSL? Нет. Браузеры принципиально не поддерживают Brotli по незашифрованным соединениям. Это сделано намеренно для безопасности. HTTPS — обязательное условие.

Можно ли предварительно сжать файлы? Да — pre-compressed Brotli. Nginx и Apache могут отдавать предварительно сжатые .br файлы вместо сжатия на лету. Это снижает CPU нагрузку для популярной статики.

Попробуйте инструмент

Проверьте brotli на вашем сайте с помощью бесплатного инструмента.

HTTP/2 & Brotli

Техническая поддержка

Нашли баг, сбой или ошибку в работе сервиса? Есть предложение по улучшению? Напишите нам — мы читаем каждое сообщение и стараемся быстро исправлять проблемы.