Алгоритмы Brotli, рекомпрессия и при чем тут швейцарские булочки

Обложка: Алгоритмы сжатия данных

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

В статье рассмотрим технологии сжатия данных, которые влияют на скорость работы сайта, объясним, почему они необходимы, а также расскажем, какие использует DDoS-Guard.

Каждый день на страницах сайтов размещается большое количество контента: от ярких иллюстраций и видео до сложных анимаций и объемных текстов. Все эти элементы важны для создания приятного пользовательского опыта, вовлечения аудитории и передачи полезной информации. Однако каждый элемент увеличивает общий вес страницы. При этом чем тяжелее страница — тем больше времени требуется для ее загрузки.  
Чтобы решить эту проблему и были разработаны алгоритмы сжатия данных, такие как Brotli и GZIP. Их цель — уменьшить размер загружаемых файлов, будь то видео, изображения или код, и сократить время их передачи. 
Алгоритмы анализируют повторяющиеся последовательности данных и заменяют их короткими символами, создавая «упакованный» файл, который занимает меньше места. Когда сжатый файл достигает устройства пользователя, он «распаковывается» до исходного состояния и отображается без потери качества. 

Brotli (Spanisch Brötli) — это современный алгоритм сжатия (компрессии) данных, разработанный специалистами Google в 2015 году, который был назван в честь фирменной швейцарской булочки. Изначально технология создавалась для сжатия шрифтов, но со временем была адаптирована для веб-трафика. В отличие от традиционного GZIP — утилиты, которая использовалась с 1992 года, Brotli предлагает улучшенный механизм сжатия данных. Он позволяет ускорить загрузку веб-страниц. Алгоритм особенно эффективен при работе с текстовыми файлами, HTML, CSS и JavaScript — ключевыми элементами любого сайта.

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

Для наглядного сравнения эффективности сжатия Brotli и GZIP обратимся к таблице ниже. Подробно она была рассмотрена в исследовании Гарри Робертса об эффективности Brotli.

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

Уровень сжатияРазмер (в байтах)Эффективность сжатия (в сравнении с несжатыми данными)Улучшение в % по сравнению с Gzip
1434562.733%
2398982.9711%
3394163.0811%
4384883.0815%
5363233.2719%
6360483.2920%
7358043.3120%
8357093.3221%
9356593.3321%

Чтобы проверить, как сжимаются данные на нужном вам веб-ресурсе, а также как они влияют на размер передаваемой информации, используйте бесплатный инструмент compression-tester

Компания Amazon Web Services, упоминает в своей документации, что Brotli может быть на 24% эффективнее, чем GZIP, и рекомендует использовать Brotli.

Самый часто используемый уровень сжатия файлов для большинства сайтов обычно составляет 5–6. Он позволяет сбалансировать степень и скорость сжатия данных.

Снова обратимся к исследованию Гарри Робертса об эффективности Brotli. В нем он приводит пример с произведениями Шекспира, которые имеют размер 5,2 Мб. С помощью алгоритма Brotli файлы сжимаются до 1,7 Мб при 6 уровне сжатия. Размер файла с пьесами Шекспира стал в 3.1 раза меньше. Если же использовать GZIP для того же файла и при том же уровне сжатия, то уменьшение размера будет лишь в 2.8 раз.

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

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

БраузерВерсия браузера с поддержкой Brotli
Google Chrome51 и выше
Mozilla Firefox44 и выше
Microsoft Edge15 и выше
Safari11 и выше

Клиенты DDoS-Guard, которые пользуются услугой защиты от DDoS-атак на уровне L7, могут выбрать алгоритм сжатия и другие опции на панели управления CDN в личном кабинете:

Технология комбинирует возможности алгоритмов Brotli и GZIP. Согласно данным исследования CertSimple, Brotli обеспечивает на 14-21% более эффективное сжатие по сравнению с GZIP, и этот показатель может доходить до 25-30%. Эвристическая рекомпрессия позволяет распаковывать данные, сжатые с помощью GZIP, и повторно сжимать их с использованием Brotli, если браузер пользователя поддерживает этот алгоритм. Более того, система автоматически определяет, какой алгоритм сжатия будет наиболее эффективен для конкретной ситуации, и использует именно его.

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