Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

Brotli - это спецификация формата данных [2] для потоков данных, сжатых с помощью особой комбинации универсального алгоритма сжатия без потерь LZ77 , кодирования Хаффмана и контекстного моделирования 2-го порядка . Brotli - это алгоритм сжатия, разработанный Google и лучше всего подходит для сжатия текста. Brotli в основном используется веб-серверами и сетями доставки контента для сжатия содержимого HTTP, что ускоряет загрузку веб-сайтов. Преемник gzip , поддерживается всеми основными веб-браузерами и все чаще используется, поскольку обеспечивает лучшее сжатие, чем gzip.


История [ править ]

Сотрудники Google Юрки Алакуйяла и Золтан Сабадка изначально разработали Brotli в 2013 году, чтобы уменьшить размер передаваемых веб-шрифтов WOFF . Alakuijala и Szabadka завершили спецификацию Brotli в 2013–2016 годах. Спецификация сопровождалась эталонной реализацией, разработанной двумя дополнительными авторами, Евгением Ключниковым и Лоде Вандевенном, которые ранее в 2013 году разработали zopfli- реализацию сжатия, совместимого с deflate и gzip, в Google . [3] : 1 В отличие от zopfli, который был повторной реализацией существующая спецификация формата данных, Brotli был новым форматом данных, который позволил авторам еще больше улучшить степень сжатия. [4] В сентябре 2015 года спецификация Brotli была обобщена для сжатия HTTP-потока (тип кодирования содержимого «br»).

Engineering Task Force Интернет одобрил Brotli сжатую спецификацию формата данных в качестве информационного запроса на комментарии (RFC 7932) , в июле 2016 года [2] Формат данных Brotli является неотъемлемой частью 2 - й итерации формата Web Open Font . [2] : 3

Поддержка Brotli была добавлена ​​в веб-браузеры на протяжении многих лет, и по состоянию на март 2021 года 94% пользователей во всем мире использовали браузеры, поддерживающие этот формат [5].

О [ править ]

Brotli был впервые выпущен в 2013 году для автономного сжатия веб-шрифтов . [6] Brotli был продолжением разработки zopfli , который представляет собой zlib- совместимую реализацию стандартных спецификаций gzip и deflate . Brotli позволяет более плотную упаковку, чем gzip и deflate, благодаря нескольким улучшениям на уровне алгоритмов и форматов: использование контекстных моделей для литералов и расстояний копирования, описание расстояний копирования через прошлые расстояния, использование очереди перехода на передний план при выборе энтропийного кода, объединение -энтропийное кодирование длины букв и копий, использование алгоритмов графа при разделении блоков и увеличенное окно обратной ссылки являются примерами улучшений.

В сентябре 2015 года спецификация Brotli была обобщена для сжатия HTTP-потока (тип кодирования содержимого «br»). Эта обобщенная итерация также улучшила степень сжатия за счет использования предварительно определенного словаря часто используемых слов и фраз. Версия Brotli, выпущенная в сентябре 2015 года разработчиками программного обеспечения Google, содержала улучшения в стандартном сжатии данных без потерь , с особым упором на использование сжатия HTTP . Кодер был частично переписан, в результате чего улучшилась степень сжатия, были ускорены кодер и декодер, улучшен API потоковой передачи и добавлены дополнительные уровни качества сжатия. Кроме того, в новом выпуске показаны улучшения производительности на разных платформах с уменьшением памяти для декодирования.[4]

В отличие от большинства алгоритмов сжатия общего назначения, Brotli использует предварительно определенный словарь размером примерно 120 КБ в дополнение к динамически заполняемому («скользящее окно») словарю. Предварительно определенный словарь содержит более 13000 общих слов, фраз и других подстрок, полученных из большого корпуса текстовых и HTML-документов. [7] [3] Было показано, что использование предварительно определенного словаря увеличивает степень сжатия, когда файл в основном содержит часто используемые слова. [8]

Размер скользящего окна Brotli ограничен 16 МБ . Это позволяет выполнять декодирование на мобильных телефонах с ограниченными ресурсами, но снижает производительность Brotli на тестах сжатия с большими файлами. Ограничения небольшого размера окна можно уменьшить, используя Brotli с большим окном , который несовместим с RFC7932 (собственно Brotli).

Потоки, сжатые с помощью Brotli, имеют тип кодировки содержимого «br».

В то время как реализация алгоритма сжатия deflate в Google zopfli названа в честь zöpfli, швейцарского немецкого слова, обозначающего плетеный масляный хлеб размером с закуску , brotli назван в честь brötli, швейцарского немецкого слова, обозначающего булочку . [4] Собственная реализация спецификации Brotli компанией Google была выпущена в соответствии с условиями разрешающей лицензии MIT на бесплатное программное обеспечение в 2016 году. Формальная проверка спецификации Brotli была независимо проведена Марком Адлером , ср.  [2] : 126 один из соавторов zlib / gzipформат сжатия и библиотека. Реализация Адлера была выпущена на условиях аналогичной разрешительной лицензии Apache . [9] Существуют и другие реализации спецификации, в том числе на языке haxe от источника к исходному .

Brotli доступен как порт для Android в терминальном интерфейсе с собственной общей библиотекой . [10]

Сжатие Brotli обычно используется как альтернатива gzip, поскольку Brotli обеспечивает лучшее общее сжатие. [11] По сравнению со сжатием gzip файлы JavaScript, сжатые с помощью Brotli, примерно на 15% меньше, файлы HTML - примерно на 20%, а файлы CSS - примерно на 16%. [12]

Промышленная поддержка [ править ]

Браузеры и другие клиенты [ править ]

  • Mozilla Firefox представил поддержку метода кодирования содержимого br в версии 44 (выпущенной 26 января 2016 г.). [13]
  • Google Chrome поддерживает метод кодирования содержимого br с версии 50 (выпущенной 20 апреля 2016 г.). [14]
  • Opera поддерживает метод кодирования содержимого br с версии 38 (выпущенной 8 июня 2016 г.). [14]
  • Microsoft Edge поддерживает метод кодирования содержимого br с версии 15 (выпущенной 5 апреля 2017 г.). [15]
  • Safari поддерживает метод кодирования содержимого br с версии 11 (выпущенной 5 октября 2017 г.).
  • cURL имеет параметр времени компиляции для поддержки метода кодирования содержимого 'br' с использованием libbrotli начиная с версии 7.57, выпущенной 29 ноября 2017 г. [16]
  • 7zip доступен в расширении Brotli с помощью 7zip-zstd. [17]

Веб-серверы [ править ]

  • Для HTTP-сервера Apache метод кодирования содержимого br поддерживается модулем mod_brotli начиная с версии 2.4.26. [18]
  • Microsoft IIS имеет [1] поддерживаемое расширение с мая 2018 года, которое добавляет поддержку метода кодирования содержимого br.
  • nginx имеет модуль ngx_brotli, предоставляемый Google с декабря 2016 года.
  • Node.js имеет встроенный встроенный кодировщик и декодер, начиная с версии 11.7.0, который может использоваться для поддержки кодирования содержимого br.
  • Amazon CloudFront может автоматически сжимать кэшируемые ответы на периферии с помощью Brotli, начиная с сентября 2020 г. [19]
  • Веб-сервер LiteSpeed включает метод кодирования содержимого br для статических файлов только с версии 5.2 в июле 2017 года.
  • Cloudflare CDN предлагает опцию brotli для сжатия данных между своим пограничным узлом и пользователем. [20]
  • NaviServer добавил поддержку в версии 4.99.17b1
  • Caddy (веб-сервер) Обслуживает статически сжатые файлы .br, начиная с версии 0.9.4 от 21 декабря 2016 года.
  • lighttpd mod_deflate поддерживает .br начиная с 1.4.56 [21] ноября 2020 года.

Ссылки [ править ]

  1. ^ "Релизы - google / brotli" . Проверено 13 сентября 2020 г. - через GitHub .
  2. ^ a b c d Алакуйяла, Юрки; Szabadka, Zoltan (2016), RFC 7932: Brotli Compressed Data Format , Internet Engineering Task Force Request for Comments, Fremont, CA: IETF Trust..
  3. ^ a b Алакуйяла, Юрки; Ключников, Евгений; Забадка, Золтан; Вандевенн, Лоде (22 сентября 2015 г.), «Сравнение алгоритмов сжатия Brotli, Deflate, Zopfli, LZMA, LZHAM и Bzip2» (PDF) , The Comprehensive R Archive Network , r-project.org .
  4. ^ a b c Сабадка, Золтан (22 сентября 2015 г.), «Представляем Brotli: новый алгоритм сжатия для Интернета» , блог Google Open Source , Маунтин-Вью, Калифорния: opensource.googleblog.com.
  5. ^ "Могу я использовать ... - Бротли" . 2021-03-07.
  6. ^ Sheeter, Rod (18 февраля 2015), "Меньшие шрифты с WOFF 2.0 и юникод-диапазона" , Google Open Source блог , Mountain View, CA: opensource.googleblog.com
  7. ^ Chirgwin, Ричард (23 сентября 2015), "Новый отжимают от Google: сжатие Brotli с открытым кодом" , Регистр , theregister.co.uk.
  8. ^ Ларкин, Генри (2007). «Индексирование слов для представлений данных мобильных устройств». 7-я Международная конференция IEEE по компьютерным и информационным технологиям (CIT 2007) . С. 399–404. DOI : 10,1109 / CIT.2007.22 . ISBN 978-0-7695-2983-7..
  9. ^ Адлер, Марк (26 января 2015 г.), «Обзор и проверка спецификации Brotli» , Adler brotli , Сан-Франциско: GitHub.
  10. ^ "Brotli как отдельная программа для Android" . Мастер-консоль (Github) .
  11. ^ Кальвано, Пол (2018-07-25). "Сжатие Brotli: насколько оно уменьшит ваш контент?" . Проверено 7 марта 2021 .
  12. ^ Pandjarov, Христо (2021-01-13). «Больше увеличения скорости сайта с помощью алгоритма сжатия Brotli» . SiteGround . Проверено 7 марта 2021 .
  13. ^ Гуджер, Бен; и другие. (26 января 2016 г.), «Примечания к выпуску Firefox 44» , Mozilla Firefox , Mozilla Foundation.
  14. ^ a b Baheux, Kenji (15 января 2016 г.), "Accept-encoding: br on HTTPS connection" , Chrome Platform Status , chromestatus.com.
  15. ^ Трэйс, Роб (20 декабря 2016 г.), «Введение в сжатие Brotli в Microsoft Edge» , разработчик Microft Edge , blogs.windows.com
  16. ^ Стенберг, Даниэль; и другие. «локон - Изменения» . curl.haxx.se . Проверено 14 января 2018 года .
  17. ^ https://github.com/mcmilk/7-Zip-zstd
  18. ^ «Изменения в Apache 2.4.26» , репозиторий Apache HTTPD , svn.apache.org.
  19. ^ «Amazon CloudFront объявляет о поддержке сжатия Brotli» . aws.amazon.com .
  20. ^ "Что сжимает Cloudflare?" . support.cloudflare.com .
  21. ^ "Информация о выпуске lighttpd 1.4.56" . redmine.lighttpd.net .
Заметки
 - Финли, Клинт (22 сентября 2015 г.), «Hooli, я имею в виду Google, бесплатно предоставляет код сжатия» , Wired Online , wired.com  .

Внешние ссылки [ править ]

  • Brotli эталонная реализация в brotli на GitHub