Gzip против Brotli — какой метод сжатия следует использовать и почему

44

Gzip стал золотым стандартом для сжатия файлов в начале 1990-х годов, но если вы все еще используете его в 2018 году, вы можете рассмотреть возможность перехода на более новый метод сжатия.

Хотя Gzip по-прежнему занимает свое место в сердцах многих, веб-разработчики все чаще обращаются к более совершенным вариантам, таким как алгоритм сжатия Brotli от Google.

Краткая история сжатия файлов

«G» в Gzip — это сокращение от GNU. GNU — операционная система с открытым исходным кодом на базе Unix, разработанная в 1980-х годах. К тому времени Unisys и IBM уже запатентовали собственные алгоритмы сжатия и распаковки файлов, что позволило их машины для хранения большего количества данных.Поэтому программисты Жан-Лу Гайи и Марк Адлер создали Gzip как бесплатную альтернативу для пользователей GNU.

Новый Gzip был не просто дешевой подделкой; на самом деле он был быстрее, чем его конкуренты, защищенные авторским правом. В результате люди до сих пор используют его для сжатия файлов. Хотя легко придерживаться того, что вам удобно, существуют различные алгоритмы сжатия, которые в настоящее время обеспечивают лучшие результаты сжатия, чем Gzip. Вот тут и появляется Бротли.

Что такое Бротли?

Brotli — это более новая спецификация формата данных, в которой используются преимущества нескольких алгоритмов для сжатия данных более эффективно, чем Gzip. В 2015 году спецификация Brotli была обобщена для сжатия потока HTTP с типом кодирования содержимого «br».

Разработанный Юрки Алакуйала и Золтаном Шабадкой, Brotli использует те же алгоритмы сжатия, что и Gzip, но также поддерживается словарем часто используемых слов и фраз для обеспечения лучшей степени сжатия.

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

Хотя так было не всегда, теперь Brotli поддерживается всеми основными браузерами.

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

Что делает Brotli лучше?

Согласно исследованию, проведенному CertSimple :

  • Пакеты JavaScript, сжатые с помощью Brotli, на 14% меньше, чем пакеты JavaScript, сжатые с помощью Gzip.
  • Файлы HTML, сжатые Broti, на 21 процент меньше, чем их эквиваленты Gzip.
  • Файлы CSS, сжатые Brotli, на 17% меньше, чем файлы, сжатые Gzip.

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

Gzip против Brotli: получение максимальной отдачи от Brotli

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

Идеальная настройка сжатия зависит от того, что и когда вы сжимаете. Хорошей отправной точкой является Brotli 4 для более быстрого сжатия динамического содержимого. С другой стороны, статические ресурсы могут быть предварительно сжаты более плотно без ущерба для скорости, поэтому значение по умолчанию «11» больше подходит для такого контента.

Установка Brotli на ваш веб-сервер

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

Чтобы продемонстрировать пример быстрой установки, предположим, что вы используете Nginx. В этом случае вы можете установить модуль ngx_brotli следующим образом:

cd nginx-1.x.x
$ ./configure --add-module=/path/to/ngx_brotli
$ make && make install

Затем добавьте следующее в блок HTTPS (Brotli работает только через HTTPS):

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

Вы можете изменить вышеуказанные директивы по своему усмотрению.

Наконец, введите следующее, чтобы перезапустить NGINX и начать пожинать плоды:

sudo systemctl restart nginx
Использование Brotli с предварительно сжатыми активами

Brotli отлично подходит для доставки предварительно сжатых ресурсов намного быстрее, чем Gzip. Это связано с тем, что вы можете сжать их на самом высоком уровне Brotli (11), а затем заставить исходный сервер забирать их по запросу.

Этот тип настройки отлично работает с Webpack, поскольку доступен плагин Webpack для автоматического сжатия ваших статических ресурсов как Gzip, так и Brotli. Таким образом, сжатие «на лету» не требуется, что означает экономию времени, затрачиваемого на сжатие файлов.

Узнайте больше о том, как использовать Webpack для создания ресурсов, сжатых Brotli.

Поддерживает ли ваш CDN Brotli?

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

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

Gzip против Brotli: вкратце

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

Хотя использование Brotli может превратить быстрые веб-приложения в более быстрые, это не обязательно сделает медленные приложения быстрыми. Поскольку Brotli сжимает только текстовые ресурсы, вам нужно оптимизировать изображения другими способами. Если вы еще не перешли на HTTP/2, это может существенно повлиять на производительность вашего приложения. Каждая миллисекунда на счету, поэтому любое действие, которое вы предпринимаете для ускорения своего приложения, повышает ваши шансы на удержание пользователей.

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