Сжатие Brotli как настроить и ускорить загрузку сайта

Хочешь в ТОП? Хватит хотеть, пора действовать!

Начать продвижение

Сжатие Brotli как настроить и ускорить загрузку сайта

Опубликовано: 01 ноября 2026
Обновлено: 01 ноября 2026
8
6 минут
Сжатие Brotli как настроить и ускорить загрузку сайта
Москва г. Москва, ул. Нобеля 7, п. 56 +7 (800) 700-59-30
Brotli — это алгоритм сжатия данных без потерь, который уменьшает объём передаваемых HTML, CSS, JavaScript и других текстовых ресурсов. Сервер отправляет сжатое содержимое, а браузер восстанавливает его перед использованием. Код и оформление сайта сохраняются, при этом для передачи файлов требуется меньше трафика.

На подходящих текстовых файлах Brotli позволяет получить меньший размер, чем Gzip. Это может сократить время загрузки ресурсов, особенно при медленном соединении. Однако результат зависит от состава страницы и настроек: сжатие текста не устраняет задержки сервера и не уменьшает автоматически тяжёлые изображения или видео.

Чтобы понять, как включить Brotli на конкретном сайте, нужно определить, откуда посетители получают файлы: непосредственно с веб-сервера или через сеть доставки контента — CDN. От этого зависят способ настройки и место проверки. Затем необходимо убедиться, что браузер действительно получает сжатые ответы, и сравнить объём передачи и время загрузки до и после изменений.

Как работает Brotli и чем он отличается от Gzip?

Brotli и Gzip уменьшают объём данных за счёт кодирования повторяющихся последовательностей. Brotli дополнительно использует встроенный словарь распространённых фрагментов, что помогает эффективнее сжимать текстовые ресурсы сайта. Итоговый выигрыш зависит от содержимого файла, уровня сжатия и настроек обоих алгоритмов.

Сжатие применяется к содержимому HTTP-ответа. Браузер сообщает о поддерживаемых алгоритмах в заголовке Accept-Encoding. Сервер выбирает подходящий вариант и указывает его в Content-Encoding: для Brotli используется значение br, для Gzip — gzip. Браузер распаковывает полученные данные автоматически.

Accept-Encoding: br, gzip

Такой заголовок запроса сообщает о поддержке обоих алгоритмов. Если сервер отправляет ответ, сжатый Brotli, в нём должен присутствовать заголовок:

Content-Encoding: br

Само наличие br в запросе ещё не подтверждает работу Brotli: сервер может выбрать другой алгоритм или вернуть несжатый ответ. Проверять нужно заголовки ответа конкретного ресурса.

Сравнение Brotli и Gzip для сжатия ресурсов сайта
Критерий Brotli Gzip
Размер текстовых ресурсов Часто обеспечивает меньший размер, особенно при предварительном сжатии с высоким уровнем качества Хорошо сжимает текст, но на многих файлах результат получается крупнее
Затраты на сжатие Высокие уровни требуют больше процессорного времени Часто удобен для быстрого сжатия ответов во время обработки запроса
Предварительная подготовка файлов Позволяет сжать неизменяемые файлы заранее и отдавать готовые версии Также поддерживает предварительное сжатие
Использование в браузерах Для обычных публичных сайтов применяется через HTTPS Применяется через HTTP и HTTPS
Практическая роль Подходит для сокращения объёма CSS, JavaScript, HTML, SVG и других текстовых данных Подходит для динамических ответов и как запасной вариант для клиентов без поддержки Brotli

Для неизменяемых CSS и JavaScript затраты на сильное сжатие можно перенести на этап сборки сайта: подготовить файлы заранее, а затем многократно отправлять готовые версии. Это уменьшает объём передачи без повторного сжатия при каждом запросе, но требует хранения и своевременного обновления сжатых копий.

Для ответов, которые формируются заново при каждом обращении, ситуация другая. Максимальный уровень Brotli может уменьшить размер ответа, но увеличить время его подготовки. Поэтому уровень выбирают по измерениям: учитывают одновременно размер данных, задержку ответа и нагрузку на процессор. Числовые уровни Brotli и Gzip напрямую не сопоставимы.

Уже сжатые изображения, видео и архивы обычно почти не выигрывают от дополнительного HTTP-сжатия. Для них полезнее подобрать формат, разрешение и качество. Основная область применения Brotli на сайте — текстовые ресурсы.

Улучшить видимость в ИИ-выдаче

Начать продвижение

Что проверить перед включением Brotli на сайте?

Перед настройкой Brotli проверьте HTTPS, поддержку сжатия на сервере или CDN и текущие заголовки ответов. Затем выберите ресурсы для сжатия и сохраните исходные показатели: объём передаваемых данных и время загрузки. Это позволит проверить результат после изменений.

Начните с проверки действующей конфигурации. Откройте инструменты разработчика в браузере, перейдите на вкладку «Сеть» (Network), отключите кеш на время проверки и перезагрузите страницу. Выберите основной HTML-документ, затем файлы CSS и JavaScript. В заголовках ответа найдите Content-Encoding: значение br подтверждает Brotli, gzip — Gzip. Отсутствие заголовка обычно указывает, что содержимое ответа передано без HTTP-сжатия.

Проверяйте несколько ресурсов отдельно. Сжатие может работать для HTML, но не применяться к таблицам стилей, сценариям или ответам программного интерфейса. Файлы со сторонних доменов обслуживаются их владельцами: настройка вашего сервера на них не повлияет.

Определите, где формируется ответ для посетителя. Если сайт работает через CDN или обратный прокси-сервер, именно этот узел может сжимать данные перед отправкой браузеру. На обычном хостинге возможность включения Brotli зависит от настроек провайдера. При самостоятельном администрировании потребуется проверить наличие соответствующего модуля или встроенной поддержки в используемом серверном ПО.

Для публичного сайта нужен действующий HTTPS: браузеры обычно используют Brotli для веб-ресурсов через защищённое соединение. При этом сертификат сам по себе не включает сжатие — его настраивают отдельно.

Разделите ресурсы по способу подготовки. Для файлов, которые меняются только при обновлении сайта, можно заранее создавать сжатые копии. Для HTML и других ответов, формируемых по запросу, потребуется сжатие во время обработки обращения либо на уровне CDN. От этого выбора зависят нагрузка на процессор, настройки кеширования и порядок публикации обновлений.

До внесения изменений зафиксируйте:

  • какое сжатие сейчас используется для HTML, CSS и JavaScript;
  • размер выбранных ресурсов при передаче по сети;
  • время ожидания ответа сервера и загрузки этих ресурсов;
  • условия проверки: браузер, ограничение скорости соединения и состояние кеша.

После настройки повторите измерения в тех же условиях несколько раз. Сравнивайте одни и те же версии файлов: обновление кода или содержимого страницы одновременно со сменой алгоритма помешает выделить эффект Brotli.

Если у вас есть доступ к конфигурации сервера, сохраните её рабочую копию и подготовьте способ возврата к прежним настройкам. Gzip целесообразно оставить доступным для клиентов, которые не поддерживают Brotli. Сервер должен выбирать совместимое представление по заголовку Accept-Encoding.

Как включить Brotli на Nginx, Apache и через CDN?

Способ включения Brotli зависит от того, какой узел отправляет данные браузеру. На Nginx потребуется модуль сжатия, на Apache — mod_brotli, а при использовании CDN настройку можно выполнить на стороне сети доставки контента. Выберите вариант, соответствующий вашей инфраструктуре.

На Nginx. Для приведённой ниже конфигурации нужен модуль ngx_brotli. Установите совместимый пакет из репозитория вашей системы или поставщика Nginx. Команда установки и способ загрузки модуля зависят от дистрибутива и сборки сервера.

После подключения модуля добавьте настройки в существующий блок http или в блок server нужного сайта:

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

HTML включён в перечень сжимаемых типов по умолчанию. Уровень 5 можно использовать как отправную точку для измерений, затем проверить нагрузку и размер ответов. Повышение уровня увеличивает затраты на сжатие.

Если при сборке сайта создаются готовые файлы .br, подключите статическую часть модуля и добавьте:

brotli_static on;

Рядом с исходным файлом, например app.js, должна находиться актуальная копия app.js.br. Директива сама её не создаёт. Используйте значение on: оно учитывает поддержку алгоритма клиентом.

Проверьте конфигурацию и примените её только при успешном результате:

sudo nginx -t
sudo systemctl reload nginx

Команда перезагрузки через systemctl подходит для систем, где Nginx управляется службой systemd.

На Apache. Проверьте наличие модуля Brotli в списке загруженных модулей:

apachectl -M

Если brotli_module отсутствует, установите и включите его способом, предусмотренным вашим дистрибутивом. Для директивы AddOutputFilterByType также необходим модуль mod_filter.

В конфигурацию нужного виртуального хоста добавьте:

BrotliCompressionQuality 5
AddOutputFilterByType BROTLI_COMPRESS text/html text/plain text/css text/javascript application/javascript application/json application/xml image/svg+xml

Здесь BROTLI_COMPRESS включает фильтр для перечисленных типов содержимого, а BrotliCompressionQuality задаёт уровень сжатия. Эта директива применяется в конфигурации сервера или виртуального хоста — переносить весь пример в .htaccess нельзя.

Перед применением выполните проверку:

apachectl configtest

Если ошибок нет, перечитайте конфигурацию штатной командой вашей системы. Название службы зависит от установки: обычно это apache2 или httpd.

Через CDN. Если посетители получают ресурсы через сеть доставки контента, Brotli можно включить на её стороне. Это упрощает настройку сервера, но передаёт управление сжатием провайдеру CDN.

Например, в Cloudflare для подходящих ответов предусмотрено сжатие по умолчанию, а правила Compression Rules позволяют изменить выбор алгоритма. Параметр «Enable Brotli and Gzip compression» задаёт предпочтение Brotli с переходом на Gzip или несжатый ответ, если клиент не поддерживает нужный формат. Проверьте, что другое правило не отключает сжатие для выбранного адреса.

Настройка CDN действует только на трафик, проходящий через неё. После изменения проверяйте публичный адрес сайта, по которому заходят посетители.

Проблема: Nginx сообщает unknown directive "brotli" при проверке конфигурации.

Решение: проверьте установку, совместимость и загрузку модуля. Запись brotli on; включает уже подключённую возможность, но не устанавливает её. Пока проверка конфигурации завершается ошибкой, применять изменения нельзя.

После настройки запросите HTML-документ и несколько файлов CSS и JavaScript. Заголовок Content-Encoding: br должен появиться в ответах, для которых сервер выбрал Brotli. Сохраните работающую настройку Gzip как запасной вариант.

Отслеживайте и улучшайте свою видимость в ответах нейросетей

Начать

Как выбрать уровень сжатия Brotli и настроить кеширование?

Для сжатия ответов во время запроса начните с умеренного уровня и проверьте нагрузку на сервер. Для заранее подготовленных CSS и JavaScript можно использовать более высокий уровень: посетитель получит готовый файл, поэтому время его сжатия не увеличит ожидание ответа.

Brotli поддерживает уровни от 0 до 11. Высокий уровень обычно уменьшает размер файла, но требует больше времени на обработку. Разница между соседними уровнями зависит от содержимого: универсального значения, которое обеспечивает лучшую скорость на любом сайте, нет.

Параметры Brotli и кеширования, которые нужно согласовать
Параметр Что регулирует Как выбирать
Уровень сжатия, 0–11 Плотность сжатия и затраты процессорного времени Для динамических ответов начать с 4–5; более высокие уровни проверять по размеру ответа и задержке
Предварительное сжатие Подготовку файлов .br до обращения посетителя Применять к ресурсам, которые обновляются при публикации новой версии сайта
Content-Type Тип содержимого, по которому сервер выбирает ресурсы для сжатия Проверить соответствие фактическому формату файла и списку типов в конфигурации
Vary: Accept-Encoding Раздельное кеширование представлений ресурса с разным сжатием Использовать, когда выбор представления зависит от Accept-Encoding
Cache-Control Условия хранения и повторного использования ответа Настраивать отдельно для версионируемых файлов, HTML и персональных данных

Для динамических ответов сравнивайте размер и задержку одновременно. Если повышение уровня сократило передачу на несколько килобайт, но заметно увеличило ожидание первого байта, настройка может ухудшить загрузку. Проверяйте результат при характерном для сайта числе одновременных запросов: одиночное обращение не показывает поведение сервера под нагрузкой.

Для предварительного сжатия ограничение другое — продолжительность сборки. Можно проверить уровни 9–11 и оставить тот, который даёт полезное сокращение размера при приемлемом времени подготовки. Исходный файл и его сжатые копии должны публиковаться вместе. Иначе браузер может получить старый код из файла .br, хотя несжатая версия уже обновлена.

Кеш должен учитывать способ сжатия. Если один адрес возвращает Brotli, Gzip или несжатое содержимое в зависимости от запроса, заголовок ответа должен сообщать об этом:

Vary: Accept-Encoding

Обычно его формирует модуль сжатия или обслуживающий прокси-сервер. Проверьте фактический ответ перед добавлением настройки вручную. Если в Vary уже перечислены другие поля, их нужно сохранить: они также могут влиять на выбор версии содержимого.

Для общедоступных CSS и JavaScript с уникальным адресом каждой версии можно назначить длительное кеширование. Например, файл app.a81f3c.js при изменении содержимого должен получить новое имя. Для таких ресурсов подходит следующий заголовок:

Cache-Control: public, max-age=31536000, immutable

Он разрешает хранить ответ год и сообщает, что содержимое по этому адресу не изменится в течение срока свежести. Цена такого подхода — обязательное обновление адресов при выпуске новой версии. Если постоянно перезаписывать app.js и сохранить этот заголовок, часть посетителей продолжит использовать старый файл.

Для HTML, который должен проверяться на обновления перед повторным использованием, возможен другой вариант:

Cache-Control: no-cache

Директива no-cache разрешает хранение, но требует проверки актуальности перед повторным использованием. Для ответов, которые вообще нельзя сохранять в кеше, предназначена no-store. Правила для личного кабинета и персональных данных задают отдельно; длительное публичное кеширование статических файлов на них переносить нельзя.

После настройки проверьте два сценария: первое открытие с пустым кешем и повторный визит. В первом случае оценивается объём передачи после сжатия, во втором — возможность повторно использовать уже загруженные ресурсы. Эти измерения показывают разные составляющие ускорения сайта.

Как проверить работу Brotli и измерить ускорение сайта?

Работу Brotli подтверждает заголовок Content-Encoding: br в ответе конкретного ресурса. Чтобы оценить пользу настройки, сравните объём переданных данных и время загрузки в одинаковых условиях. Само включение алгоритма ещё не доказывает, что страница стала открываться быстрее.

Проверьте ответы в браузере.

Откройте инструменты разработчика и вкладку «Сеть» (Network). Включите отключение кеша — Disable cache — и перезагрузите страницу, оставив инструменты открытыми. Выберите HTML-документ, файл CSS или JavaScript и откройте заголовки ответа.

Content-Encoding: br
Vary: Accept-Encoding

Первый заголовок указывает на применение Brotli. Второй сообщает кеширующим узлам, что представление ресурса зависит от поддерживаемого сжатия. Проверяйте полноценный ответ с кодом 200: ответ 304 не содержит тела и не подходит для измерения объёма загрузки.

В сведениях о размере различайте переданные данные и распакованный ресурс. После включения Brotli уменьшается объём передачи, а размер восстановленного CSS или JavaScript остаётся прежним. Если файл получен из памяти, дискового кеша или через Service Worker, выберите сетевую загрузку для проверки сжатия.

Запросите ресурс через curl.

Следующая команда выполняет GET-запрос, выводит заголовки и отбрасывает тело ответа. Вместо демонстрационного адреса укажите конечный URL проверяемого файла, который возвращает код 200.

curl -sS -D - -o /dev/null -H 'Accept-Encoding: br' 'https://example.com/assets/app.js'

Найдите Content-Encoding: br. Заголовок запроса предлагает серверу использовать Brotli, но сервер вправе вернуть несжатое содержимое. В отличие от проверки методом HEAD, такой запрос проверяет ответ с передачей тела.

Для проверки распаковки используйте сборку curl с поддержкой Brotli. Сведения о ней выводит команда curl --version. Затем выполните:

curl -sS --compressed -H 'Accept-Encoding: br' -o /dev/null 'https://example.com/assets/app.js'

Параметр --compressed включает автоматическую распаковку поддерживаемых форматов. Успешное завершение подтверждает, что curl обработал полученный ответ; выбранный алгоритм по-прежнему нужно проверять по заголовку Content-Encoding.

Сопоставьте Brotli, Gzip и несжатую версию.

Запросите один и тот же неизменяемый файл с разными значениями Accept-Encoding. В примере ниже curl выводит заголовки, размер загруженного тела в байтах и общее время запроса в секундах.

curl -sS -D - -o /dev/null -H 'Accept-Encoding: br' -w '\nbytes=%{size_download} total=%{time_total}\n' 'https://example.com/assets/app.js'

curl -sS -D - -o /dev/null -H 'Accept-Encoding: gzip' -w '\nbytes=%{size_download} total=%{time_total}\n' 'https://example.com/assets/app.js'

curl -sS -D - -o /dev/null -H 'Accept-Encoding: identity' -w '\nbytes=%{size_download} total=%{time_total}\n' 'https://example.com/assets/app.js'

Для каждого результата проверьте код ответа и фактическое сжатие. Нельзя сравнивать файл JavaScript с ответом перенаправления или страницей ошибки. Повторите запросы несколько раз, чередуя варианты: единичный замер может отражать случайную задержку сети или первый запрос к CDN.

Сокращение объёма относительно Gzip рассчитывается так: (размер Gzip − размер Brotli) / размер Gzip × 100%. Если условный файл занимает 100 КБ с Gzip и 85 КБ с Brotli, экономия составляет 15%. Это результат для конкретного файла, а не обещание ускорения всей страницы на 15%.

Измерьте загрузку страницы целиком.

Повторите браузерные измерения с теми же ограничениями скорости соединения, устройством и состоянием кеша, которые использовались до настройки. Сравните медианные результаты нескольких запусков: общий объём передачи, время ожидания первого байта и момент появления основного содержимого страницы.

Показатель LCP отражает время отображения крупнейшего видимого элемента. Brotli может улучшить его, если задержку создаёт передача HTML, CSS или JavaScript, необходимых для этого элемента. Если основное время уходит на загрузку изображения или выполнение сценариев, сокращение текстовых ресурсов может слабо повлиять на LCP.

Отдельно проверьте загрузку процессора сервера. Уменьшение трафика при заметном росте задержки ответа — повод снизить уровень динамического сжатия или заранее подготавливать неизменяемые файлы.

Почему после Gzip появился Brotli и нужно ли полностью переходить на него?

Brotli появился как способ плотнее сжимать данные, в том числе текстовые ресурсы веб-страниц. При этом Gzip сохранил практическую ценность: оба алгоритма могут работать на одном сайте, а сервер выбирает подходящий вариант с учётом возможностей клиента и своей конфигурации.

Gzip давно используется для HTTP-сжатия. Его распространённость упростила внедрение: поддержку алгоритма можно найти в браузерах, веб-серверах и промежуточных узлах. Однако с ростом объёма CSS и JavaScript стало полезно дополнительно сокращать передаваемые файлы. Brotli расширил возможности сжатия благодаря встроенному словарю распространённых последовательностей и другим способам кодирования данных.

Переход не требует менять исходный код страниц или формат подключения ресурсов. Браузер по-прежнему запрашивает файл по его обычному адресу. Разница возникает при передаче: сервер отправляет совместимое с клиентом сжатое представление, которое браузер восстанавливает перед использованием.

Практический выбор зависит от частоты обновления содержимого. Для файлов, подготовленных заранее, можно потратить больше времени на сжатие ради меньшего объёма каждой последующей передачи. Для ответов, создаваемых при каждом запросе, приходится учитывать стоимость обработки: более плотное сжатие полезно, пока оно не увеличивает задержку сильнее, чем сокращает время передачи.

Поэтому полностью отключать Gzip ради Brotli обычно незачем. Сохранение обоих вариантов обеспечивает совместимость, но требует проверки выбора алгоритма и раздельного кеширования представлений. Решение о переходе принимают по результатам измерений на собственных ресурсах, а не по максимальной степени сжатия в чужом тесте.

Какие вопросы возникают при настройке Brotli?

Можно ли включить Brotli через .htaccess?

Да, если сайт обслуживает Apache, модуль mod_brotli уже подключён, а настройки хостинга разрешают соответствующие директивы в .htaccess. Через этот файл можно назначить фильтр сжатия для нужных типов содержимого. Установить модуль или задать BrotliCompressionQuality через .htaccess нельзя: уровень сжатия настраивается в конфигурации сервера или виртуального хоста. Nginx файл .htaccess не использует.

Нужен ли отдельный модуль Brotli для WordPress?

Для HTTP-сжатия ресурсов WordPress отдельное расширение системы управления сайтом не обязательно. Brotli можно настроить на веб-сервере или CDN независимо от WordPress. Если используете расширение для оптимизации, уточните, что именно оно делает: создаёт готовые файлы .br, меняет серверные правила или подключает внешний сервис. Наличие настройки в административной панели ещё не подтверждает сжатие ответов.

Почему Brotli работает для CSS, но не для HTML?

Возможно, сервер отдаёт заранее подготовленные файлы CSS с расширением .br, а сжатие динамических ответов отключено. Другие причины — отдельные правила для HTML, ограничения CDN или уже применённое сжатие на другом уровне. Сопоставьте заголовки ответов и конфигурацию обработки этих ресурсов: наличие Brotli у одного файла не подтверждает его работу на всём сайте.

Нужно ли сжимать Brotli изображения и шрифты?

Это зависит от формата. SVG содержит текст и обычно подходит для HTTP-сжатия. JPEG, WebP, AVIF и WOFF2 уже используют сжатие, поэтому дополнительная обработка часто даёт небольшой выигрыш или увеличивает размер. Для таких ресурсов сначала оптимизируют сам файл, а необходимость Brotli определяют сравнением размеров.

Повышает ли Brotli позиции сайта в поиске?

Само включение Brotli не гарантирует роста позиций. Алгоритм сокращает объём передачи подходящих ресурсов и может улучшить скорость их загрузки. Результат нужно оценивать по фактическим показателям страницы: если основная задержка связана с ответом сервера, изображениями или выполнением JavaScript, замена сжатия не устранит её причину.

Нужно ли создавать файлы .br для каждой страницы?

Нет. Файлы .br нужны при предварительном сжатии: сервер хранит готовые копии ресурсов и выбирает их при запросе. При динамическом сжатии Brotli обрабатывает содержимое ответа во время его формирования, поэтому отдельный файл для каждой страницы создавать не требуется.

С чего начать внедрение Brotli на сайте?

Выберите несколько крупных текстовых ресурсов и проверьте на них настройку до её распространения на весь сайт. Для неизменяемых файлов подготовьте сжатые копии при сборке, для динамических ответов подберите уровень по результатам измерений под нагрузкой.

Включите проверку сжатия в порядок публикации обновлений: контролируйте актуальность файлов .br, заголовки ответов и совместимость кеша. Тогда достигнутое сокращение трафика сохранится после следующего выпуска сайта.

Повысить свою видимость в ИИ-ответах

Начать продвижение


Понравилась статья?

2 5
Наши соцсети

Ваши материалы могут быть опубликованы в блоге Rookee!

Предлагайте экспертов или присылайте свои статьи на почту editor@rookee.ru.

Улучшить видимость и позиции в поиске

Начать продвижение