Yandex.Metrika

ПОЛУЧИ Бесплатную инструкцию по созданию личного канала связи

Инструкция по созданию личного VPN

ПОЛУЧИ Бесплатную инструкцию по созданию личного канала связи

Инструкция по созданию личного VPN




Что такое Brotli

Статья обновлена 25 февраля, 2025

Что такое Brotli и как влияет на увеличение скорости загрузки сайта

Что такое Brotli? Brotli — это алгоритм сжатия без потерь с открытым исходным кодом, разработанный Google. Первоначально разработанный для уменьшения размера веб-шрифтов, Brotli теперь работает как формат общего назначения для сжатых данных. Brotli выступает в качестве альтернативы gzip и Deflate, создавая файлы меньшего размера и распаковывая так же быстро. Как установить и настроить Brotli в Nginx.

Краткая история Brotli

Изначально Brotli был создан для сжатия веб-шрифтов WOFF2. Это продолжение Zopfli, другого разработанного Google алгоритма сжатия, созданного для обратной совместимости с gzip, zlib и Deflate. Zopfli и Brotli обеспечивают гораздо лучшую степень сжатия, чем gzip, zlib или Deflate, хотя и с гораздо большей загрузкой ЦП. Со временем Brotli отказалась от обратной совместимости в пользу собственного формата файла, в котором используется .br расширение.

Brotli уникален тем, что его можно использовать только через зашифрованные соединения. Это связано с тем, что посредники (или «средние ящики») перехватывают и считывают незашифрованный HTTP-трафик. Столкнувшись с файлом Brotli, некоторые из этих посредников попытались передать файл как gzip, изменив его Content-Encoding заголовок с br на gzip. Ограничивая Brotli протоколом HTTPS, Google предотвращает это вмешательство, чтобы обеспечить более быстрое внедрение Brotli.

Ориентиры

Brotli предлагает значительно более высокие коэффициенты сжатия, чем Deflate, за счет более высокой загрузки ЦП. В исследовании Google, проведенном в 2015 году, самый высокий уровень сжатия Brotli обеспечивает коэффициент сжатия на 29% выше, чем самый высокий уровень Deflate. Однако скорости сжатия и распаковки Brotli на этом уровне были на 97% и 17% ниже, чем у Deflate соответственно (0,5 и 289,5 МБ/с по сравнению с 15,5 и 347,3 МБ/с).

Из-за относительно низкой скорости сжатия компании используют Brotli для предварительного сжатия файлов. В 2017 году Dropbox преобразовал статический контент на dropbox.com в Brotli, уменьшив размер своих активов в среднем на 20–25% . Поскольку содержимое статично, Dropbox может предварительно сжимать файлы в процессе сборки и предоставлять их пользователям напрямую.

Как использовать Бротли?

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

Подобно gzip, zlib и Deflate, Brotli предлагает несколько уровней сжатия. Более высокие уровни обычно обеспечивают лучшую степень сжатия при более низких скоростях, при этом уровень 1 является самым быстрым, а уровень 11 — самым медленным. Уровень 5 рекомендуется как хороший баланс между размером файла и скоростью, особенно для динамического сжатия.

Апачи

Apache поддерживает Brotli через модуль mod_brotli, добавленный в версии 2.4.26. Чтобы включить Brotli, добавьте в конфигурацию виртуального хоста следующее:

# Сжать распространенные текстовые типы MIME
AddOutputFilterByType BROTLI_COMPRESS text/html text/plain text/xml text/css text/javascript application/javascript
# Пропустить уже сжатое
содержимое SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-brotli
# Устанавливает уровень сжатия (по умолчанию 5)
BrotliCompressionQuality 6

mod_brotli повторно сжимает содержимое при каждом запросе. Чтобы обслуживать предварительно сжатые файлы, скопируйте файлы Brotli в папку, доступную для Apache. Затем добавьте условие перезаписи в конфигурацию вашего виртуального хоста, которое обслуживает эти файлы вместо их эквивалентов gzip.

<FilesMatch>
# Подавать сжатые CSS-файлы brotli, если они существуют и клиент принимает brotli.
RewriteCond "%{HTTP:Accept-encoding}" "br"
RewriteCond "%{REQUEST_FILENAME}\.br" "-s"
RewriteRule "^(.*)\.css" "$1\.css\.br" [QSA ]
# Подавать сжатые JS-файлы brotli, если они существуют и клиент принимает brotli.
RewriteCond "%{HTTP:Accept-encoding}" "br"
RewriteCond "%{REQUEST_FILENAME}\.br" "-s"
RewriteRule "^(.*)\.js" "$1\.js\.br" [QSA ]
# Обслуживайте правильные типы контента и предотвращайте двойное сжатие.
RewriteRule "\.css\.br$" "-" [T=text/css,E=no-brotli:1]
RewriteRule "\.js\.br$" "-" [T=text/javascript,
Header append Content-Encoding br
# Заставить прокси-серверы
отдельно кэшировать файлы brotli и # не-brotli css/js.
Добавление заголовка Vary Accept-Encoding
</FilesMatch>

Nginx

Nginx поддерживает Brotli через модуль ngx_brotli. Модуль фактически состоит из двух отдельных модулей: один для сжатия на лету, а другой для предварительно сжатых файлов. Вам нужно будет скомпилировать Nginx с включенным модулем, чтобы использовать Brotli.

Microsoft IIS

Вы можете использовать Brotli в IIS через модуль Brotli Compression Scheme Plugin с открытым исходным кодом. С помощью сценария установки Brotli автоматически устанавливается и настраивается для всех сайтов IIS. Вы можете настроить параметры сжатия, открыв свой applicationHost.config файл и перейдя в <httpCompression> раздел:

<httpCompression directory="%SystemDrive%\inetpub\temp\Временные сжатые файлы IIS">
<scheme name="br" dll="%windir%\system32\inetsrv\brotli.dll" dynamicCompressionLevel="5" staticCompressionLevel="11 " />
<scheme name="gzip" dll="%windir%\system32\inetsrv\gzip.dll" dynamicCompressionLevel="4" staticCompressionLevel="9" />
<staticTypes>
<add mimeType="text/*" enable ="true" />
...
</staticTypes>
<dynamicTypes>
<add mimeType="text/*" enabled="true" />
...
</dynamicTypes>
</httpCompression>

На момент написания этой статьи единственными настраиваемыми параметрами являются уровни статического и динамического сжатия.

CDN

Несколько CDN предлагают прозрачную поддержку Brotli, включая KeyCDN и Akamai. Однако другие CDN не распознают файлы, закодированные Brotli, и могут даже попытаться вернуться к gzip. Когда LinkedIn развернула Brotli на своем сайте в 2017 году, они обнаружили, что все пять их CDN вернули Accept-Encoding заголовок с Vary на gzip даже при обслуживании файлов Brotli. CDN также не могли кэшировать контент, поскольку контент-серверы LinkedIn содержали Content-Encoding: br в своих ответах информацию, которую CDN не могли понять.

Чтобы обойти это, LinkedIn переместил свои файлы Brotli на совершенно отдельный URL-адрес и удалил Content-Encoding: br заголовок. После того, как файл кэшируется CDN, они добавляют заголовок обратно в каждый ответ клиенту. Хотя это обходной путь, он повысил производительность на 2–6,5%, причем наибольший прирост наблюдается у мобильных пользователей.

Браузеры

Brotli поддерживается большинством современных браузеров, за исключением Internet Explorer 11 и Opera Mini. Chrome добавил поддержку в версии 50, Firefox в версии 44, Edge в версии 15, Opera в версии 38 и Safari в версии 11. 84,25% браузеров во всем мире поддерживают Brotli.

К счастью, браузеры, не поддерживающие Brotli, будут использовать альтернативные алгоритмы сжатия, просто не запрашивая Brotli в  заголовке Accept-Encoding.

Заключение

Brotli представляет новое поколение средств сжатия и хранения данных. Благодаря возможности уменьшить размер веб-страницы на 20 %, Brotli сделает Интернет более быстрым и компактным. Вы можете узнать больше о Brotli на официальной странице GitHub.

Выводы

При установки на свой интернет проект (сайт) нового алгоритма сжатия Brotli большого прироста в скорости загрузки Вы не увидите. Но уже очень быстро наступит завтра! И данный инструмент сжатия вытеснит старые алгоритмы. Без установленного модуля Brotli, Ваш сайт возможно просядет в скорости. Соответственно необходимо озаботится заранее и установить данный модуль.

Надеюсь в этой статье мне удалось рассказать Вам, что такое Brotli.

 

Учебные материалы

 

Понравился материал? Подписывайтесь на наш блог. И получите бесплатный конструктор лендингов!

Только полезная информация и реальные кейсы

Добавить комментарий

Ваш адрес email не будет опубликован.

 для диалога необходимо принять правила кофиденциальности *

СОБСТВЕННЫЙ ПАРТНЕРСКИЙ МАГАЗИН!!!
ПОЛУЧИ БЕСПЛАТНО!!!

Оставайтесь с нами и Вы…

СОБСТВЕННЫЙ ПАРТНЕРСКИЙ МАГАЗИН

Подпишись сейчас и получи 5 уроков.

Запусти свой партнерский магазин.

Все это без знаний web программирования.

Материал дохотчиво изложен и доступен любому.

Согласие на обработку персональных данных

Пошаговая инструкция по созданию собственного партнерского магазина!

«В будущем на рынке останется два вида компаний: те, кто в Интернет и те, кто вышел из бизнеса» ~ Билл Гейтс

ПОЛУЧИ Бесплатную инструкцию по созданию личного канала связи!

Инструкция по созданию личного VPN

ПОЛУЧИТЬ!
X
ПОЛУЧИТЬ!

ПОЛУЧИТЬ!