Brotli: что это и чем лучше Gzip
Brotli — современный алгоритм сжатия от Google, заменяющий Gzip. Сжимает HTML/CSS/JS на 20-30% лучше. Поддерживается всеми современными браузерами.
Что такое 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 →