Brotli — современный алгоритм сжатия данных, разработанный компанией Google. По сравнению с Gzip он обеспечивает более высокий уровень сжатия HTML, CSS, JavaScript, SVG и других текстовых файлов, благодаря чему страницы загружаются быстрее, уменьшается объем передаваемых данных и снижается нагрузка на сервер и канал связи. Практически все современные браузеры поддерживают Brotli, поэтому его использование считается одной из лучших практик оптимизации производительности сайта. В этой статье рассмотрим, как включить Brotli-сжатие на серверах Nginx и Apache, проверить его работу, а также познакомимся с полезными примерами конфигурации и рекомендациями по настройке.

Что такое Brotli

Brotli — это алгоритм сжатия без потерь, оптимизированный для передачи веб-контента. Чаще всего сжимаются:
  • HTML;
  • CSS;
  • JavaScript;
  • JSON;
  • XML;
  • SVG;
  • TXT;
  • Web Manifest.
Изображения JPEG, PNG, WebP, AVIF и видеофайлы обычно не требуют дополнительного сжатия, поскольку уже используют собственные алгоритмы компрессии.

Преимущества Brotli

  • более высокая степень сжатия по сравнению с Gzip;
  • ускорение загрузки страниц;
  • уменьшение объема сетевого трафика;
  • снижение нагрузки на сервер;
  • улучшение показателей Core Web Vitals;
  • положительное влияние на пользовательский опыт.

Brotli или Gzip

Параметр Brotli Gzip
Степень сжатия Выше Ниже
Поддержка браузеров Современные браузеры Практически все браузеры
Скорость распаковки Очень высокая Высокая
Оптимизация веб-контента Отличная Хорошая

Проверка поддержки Brotli

В Linux можно выполнить:
nginx -V 
Если в списке модулей присутствуют:
ngx_brotli 
значит сервер поддерживает Brotli. Как включить Brotli-сжатие

Установка Brotli для Nginx

Если модуль отсутствует, его необходимо установить или использовать сборку Nginx, содержащую поддержку Brotli. После установки можно переходить к настройке.

Включение Brotli в Nginx

Добавьте в конфигурацию:
brotli on; brotli_comp_level 6; brotli_static on; brotli_types text/plain text/css text/xml application/json application/javascript application/xml image/svg+xml application/rss+xml; 
После изменения конфигурации выполните:
sudo nginx -t sudo systemctl reload nginx 

Выбор уровня сжатия

Доступны уровни от 0 до 11.
Уровень Особенности
1–3 Минимальная нагрузка на процессор
4–6 Оптимальный баланс скорости и степени сжатия
7–9 Максимальная эффективность для большинства сайтов
10–11 Очень высокая нагрузка при незначительном выигрыше
Для большинства проектов рекомендуется использовать уровень 5–6.

Использование предварительно сжатых файлов

Если статические файлы уже имеют расширение .br, можно включить:
brotli_static on; 
В этом случае сервер будет отдавать готовые файлы без дополнительного сжатия.

Настройка Apache

Если используется Apache с модулем Brotli, добавьте:
<IfModule mod_brotli.c> BrotliCompressionQuality 6 AddOutputFilterByType BROTLI_COMPRESS text/html AddOutputFilterByType BROTLI_COMPRESS text/plain AddOutputFilterByType BROTLI_COMPRESS text/css AddOutputFilterByType BROTLI_COMPRESS application/javascript AddOutputFilterByType BROTLI_COMPRESS application/json AddOutputFilterByType BROTLI_COMPRESS image/svg+xml </IfModule> 

Одновременная работа Brotli и Gzip

Рекомендуется оставить поддержку Gzip для старых браузеров. Пример конфигурации:
gzip on; brotli on; 
Современные браузеры автоматически выберут Brotli, а остальные будут использовать Gzip.

Проверка работы через cURL

curl -H "Accept-Encoding: br" -I https://example.com 
Если Brotli работает, сервер вернет заголовок:
Content-Encoding: br 

Проверка через браузер

Откройте инструменты разработчика. Во вкладке Network выберите любой HTML-документ и проверьте наличие заголовка:
Content-Encoding: br 

Проверка заголовков через PHP

<?php $headers = get_headers("https://example.com", 1); print_r($headers); ?> 

Проверка поддержки Brotli браузером

<?php echo $_SERVER['HTTP_ACCEPT_ENCODING']; ?> 
Если среди поддерживаемых алгоритмов присутствует:
br 
браузер поддерживает Brotli.

Автоматическое создание файлов .br

Для предварительного сжатия можно использовать утилиту:
brotli style.css 
Будет создан файл:
style.css.br 

Какие файлы не следует сжимать

  • JPEG;
  • PNG;
  • GIF;
  • WebP;
  • AVIF;
  • MP4;
  • MP3;
  • ZIP;
  • RAR;
  • PDF (в большинстве случаев).
Эти форматы уже используют собственное сжатие, поэтому дополнительная обработка не принесет заметной пользы.

Дополнительные рекомендации

  • используйте HTTP/2 или HTTP/3;
  • настройте долгосрочное кэширование статических ресурсов;
  • минифицируйте CSS и JavaScript;
  • объединяйте небольшие файлы при необходимости;
  • используйте CDN с поддержкой Brotli;
  • оптимизируйте изображения.

Типичные ошибки

  • отсутствие модуля Brotli в Nginx или Apache;
  • слишком высокий уровень сжатия (10–11), увеличивающий нагрузку на процессор;
  • сжатие уже сжатых файлов;
  • забытая перезагрузка веб-сервера после изменения конфигурации;
  • непроверенные заголовки ответа сервера.

Чек-лист после настройки

  • ✓ Brotli поддерживается сервером.
  • ✓ Включено сжатие HTML, CSS и JavaScript.
  • ✓ Настроен оптимальный уровень сжатия.
  • ✓ Проверен заголовок Content-Encoding: br.
  • ✓ Сохранена поддержка Gzip для старых браузеров.
  • ✓ Не сжимаются изображения и архивы.
  • ✓ Конфигурация успешно проверена командой nginx -t или эквивалентной для Apache.
Brotli — один из самых эффективных способов уменьшить объем передаваемых данных и ускорить загрузку сайта. Благодаря более высокой степени сжатия по сравнению с Gzip он помогает сократить время отображения страниц, снизить нагрузку на сервер и улучшить показатели производительности. Для большинства современных сайтов рекомендуется использовать Brotli совместно с Gzip, обеспечивая совместимость со всеми браузерами и максимальную эффективность доставки контента.