WikiDer > Brotli
Эта статья поднимает множество проблем. Пожалуйста помоги Улучши это или обсудите эти вопросы на страница обсуждения. (Узнайте, как и когда удалить эти сообщения-шаблоны) (Узнайте, как и когда удалить этот шаблон сообщения)
|
Оригинальный автор (ы) | Юрки Алакуйяла, Золтан Сабадка |
---|---|
Разработчики) | Юрки Алакуйяла, Евгений Ключников, Роберт Обрик, Золтан Сабадка, Лоде Вандевенне |
изначальный выпуск | 15 октября 2013 г. |
Стабильный выпуск | 1.0.9 / 27 августа 2020[1] |
Репозиторий | |
Написано в | C |
Операционная система | Кроссплатформенность |
Платформа | Портативный |
Тип | Сжатие данных |
Лицензия | Лицензия MIT |
Интернет сайт | github |
Brotli это спецификация формата данных[2] для потоков данных сжатый с определенной комбинацией универсальных LZ77 сжатие без потерь алгоритм, Кодирование Хаффмана и 2-го порядка контекстное моделирование. Brotli - это алгоритм сжатия, разработанный Google и лучше всего подходит для сжатия текста.
Сотрудники Google Юрки Алакуйяла и Золтан Сабадка изначально разработали Brotli, чтобы уменьшить размер передачи WOFF2 веб-шрифта, и в этом контексте Brotli был продолжением разработки Zopfli, который является zlib-совместимая реализация стандарта gzip и сдувать технические характеристики. Brotli позволяет более плотную упаковку, чем gzip и deflate, благодаря нескольким улучшениям на уровне алгоритмов и форматов: использование контекстных моделей для литералов и расстояний копирования, описание расстояний копирования через прошлые расстояния, использование очереди перехода на передний план при выборе энтропийного кода, объединение -энтропийное кодирование длины букв и копий, использование алгоритмов графов при разделении блоков и увеличенное окно обратной ссылки являются примерами улучшений. Спецификация Brotli была обобщена в сентябре 2015 года для сжатия HTTP-потока (тип кодирования содержимого «br»). Эта обобщенная итерация также улучшила степень сжатия за счет использования предварительно определенного словаря часто используемых слов и фраз.
История
Alakuijala и Szabadka завершили спецификацию Brotli в 2013–2016 годах. Спецификация сопровождалась эталонной реализацией, разработанной двумя дополнительными авторами, Евгением Ключниковым и Лоде Вандевенном, которые ранее разработали Google Zopfli реализация сдувать и gzip совместимое сжатие в 2013 году.[3]:1 В отличие от zopfli, который был повторной реализацией существующей спецификации формата данных, Brotli был новым форматом данных и позволил авторам еще больше улучшить степень сжатия.[4]
В Инженерная группа Интернета утвердил спецификацию формата сжатых данных Brotli как информационный запрос на комментарий (RFC 7932) в июле 2016 года.[2] Формат данных Brotli является неотъемлемой частью 2-й итерации Формат открытого веб-шрифта.[2]:3
В то время как Google Zopfli реализация алгоритма сжатия deflate названа в честь zöpfli, Швейцарский немецкий слово для закуски плетеный масляный хлеб, Brotli назван в честь brötli, швейцарского немецкого слова, обозначающего рулет.[4] Собственная реализация Google спецификации Brotli была выпущена в соответствии с условиями разрешающее бесплатное программное обеспечение Лицензия MIT в 2016 году. Официальная проверка спецификации Brotli была независимо проведена Марк Адлер,ср. [2]:126 один из соавторов zlib/gzip формат сжатия и библиотека. Реализация Адлера была выпущена на условиях аналогичного разрешительного Лицензия Apache.[5] Также существуют другие реализации спецификации, в том числе одна в исходном коде. haxe язык.
Brotli доступен как порт для Android в терминальный интерфейс со своим общая библиотека.[6]
Около
Brotli был впервые выпущен в 2013 году для автономного сжатия веб-шрифты.[7] Версия Brotli, выпущенная в сентябре 2015 года разработчиками программного обеспечения Google, содержала улучшения в общих сжатие данных без потерь, с особым упором на использование для HTTP-сжатие. Кодер был частично переписан, в результате чего улучшилась степень сжатия, были ускорены как кодер, так и декодер, улучшен API потоковой передачи и добавлены дополнительные уровни качества сжатия. Кроме того, в новом выпуске улучшена производительность на разных платформах с уменьшением памяти для декодирования.[4]
В отличие от большинства алгоритмов сжатия общего назначения, Brotli использует предварительно определенный словарь размером примерно 120 КБ в дополнение к динамически заполняемому («скользящее окно») словарю. Предварительно определенный словарь содержит более 13000 общих слов, фраз и других подстрок, полученных из большого корпус текстовых и HTML-документов.[8][3] Было показано, что использование предопределенного словаря увеличивает сжатие, когда файл в основном содержит часто используемые слова.[9]
Раздвижное окно Бротли ограничено 16 МиБ. Это позволяет выполнять декодирование на мобильных телефонах с ограниченными ресурсами, но снижает производительность Brotli на тестах сжатия с большими файлами. Ограничения небольшого размера окна можно уменьшить, используя Большое окно Бротли, который несовместим с RFC7932 (собственно Brotli).
Потоки, сжатые с помощью Brotli, имеют тип кодировки контента "br".
Промышленная поддержка
Браузеры и другие клиенты
- Mozilla Firefox добавлена поддержка метода кодирования содержимого br в версии 44 (выпущенной 26 января 2016 г.).[10]
- Гугл Хром поддерживает метод кодирования содержимого br с версии 50 (выпущенной 20 апреля 2016 г.).[11]
- Опера поддерживает метод кодирования содержимого br с версии 38 (выпущенной 8 июня 2016 г.).[11]
- Microsoft Edge поддерживает метод кодирования содержимого br с версии 15 (выпущенной 5 апреля 2017 г.).[12]
- Сафари поддерживает метод кодирования содержимого br с версии 11 (выпущенной 5 октября 2017 г.).
- cURL имеет параметр времени компиляции для поддержки метода кодирования содержимого br с использованием libbrotli начиная с версии 7.57, выпущенной 29 ноября 2017 года.[13]
Веб-серверы
- Для HTTP-сервер Apache, метод кодирования содержимого 'br' поддерживается mod_brotli модуль начиная с версии 2.4.26.[14]
- Microsoft IIS имеет IIS brotli Community с марта 2016 года, которое добавляет поддержку метода кодирования содержимого br.
- nginx имеет ngx_brotli модуль предоставлен Google с декабря 2016 года.
- Node.js имеет встроенный собственный кодировщик и декодер, начиная с версии 11.7.0, который может использоваться для поддержки кодирования содержимого 'br'.
- Amazon CloudFront теперь (по состоянию на сентябрь 2020 г.) может автоматически сжимать кешируемые ответы на периферии с помощью Brotli.[15]
- Веб-сервер LiteSpeed Включен метод кодирования содержимого br для статических файлов только с версии 5.2 в июле 2017 года.
- Cloudflare CDN предлагает опцию brotli для сжатия данных между своим пограничным узлом и пользователем.[16]
- NaviServer добавлена поддержка в версии 4.99.17b1
- Caddy (веб-сервер) Обслуживает статически сжатые файлы .br, начиная с версии 0.9.4 от 21 декабря 2016 г.
- lighttpd mod_deflate поддерживает .br начиная с 1.4.56[17] с ноября 2020 года.
использованная литература
- ^ "Релизы - google / brotli". Получено 13 сентября 2020 - через GitHub.
- ^ а б c d Алакуйяла, Юрки; Забадка, Золтан (2016), RFC 7932: Формат сжатых данных Brotli, Запрос комментариев исследовательской группы Интернета, Фремонт, Калифорния: IETF Trust.
- ^ а б Алакуйяла, Юрки; Ключников, Евгений; Забадка, Золтан; Вандевенн, Лоде (22 сентября 2015 г.), «Сравнение алгоритмов сжатия Brotli, Deflate, Zopfli, LZMA, LZHAM и Bzip2» (PDF), Комплексная сеть архивов R, r-project.org.
- ^ а б c Забадка, Золтан (22 сентября 2015 г.), «Представляем Brotli: новый алгоритм сжатия для Интернета», Блог Google с открытым исходным кодом, Маунтин-Вью, Калифорния: opensource.googleblog.com.
- ^ Адлер, Марк (26.01.2015), «Обзор и проверка спецификации Brotli», Адлер Бротли, Сан-Франциско: GitHub.
- ^ «Brotli как отдельная программа для Android». Мастер-консоль (Github).
- ^ Шитер, Род (18 февраля 2015 г.), «Меньшие шрифты с WOFF 2.0 и диапазоном Unicode», Блог Google с открытым исходным кодом, Маунтин-Вью, Калифорния: opensource.googleblog.com.
- ^ Чиргвин, Ричард (23 сентября 2015 г.), "Новое сжатие Google: сжатие Brotli с открытым исходным кодом", Реестр, theregister.co.uk.
- ^ Ларкин, Генри (2007). «Индексирование слов для представлений данных мобильных устройств». 7-я Международная конференция IEEE по компьютерным и информационным технологиям (CIT 2007). С. 399–404. Дои:10.1109 / CIT.2007.22. ISBN 978-0-7695-2983-7..
- ^ Гуджер, Бен; и другие. (26 января 2016 г.), «Примечания к выпуску Firefox 44», Mozilla Firefox, Mozilla Foundation.
- ^ а б Бахе, Кенджи (15 января 2016 г.), "Accept-encoding: br on HTTPS connection", Статус платформы Chrome, chromestatus.com.
- ^ Трэйс, Роб (20 декабря 2016 г.), «Представляем сжатие Brotli в Microsoft Edge», Разработчик Microft Edge, blogs.windows.com
- ^ Стенберг, Даниэль; и другие. "локон - Изменения". curl.haxx.se. Получено 14 января 2018.
- ^ «Изменения в Apache 2.4.26», Репозиторий Apache HTTPD, svn.apache.org.
- ^ «Amazon CloudFront объявляет о поддержке сжатия Brotli». aws.amazon.com.
- ^ "Что сжимает Cloudflare?". support.cloudflare.com.
- ^ "Информация о выпуске lighttpd 1.4.56". redmine.lighttpd.net.
- Заметки
- - Финли, Клинт (22 сентября 2015 г.), "Hooli, я имею в виду Google, бесплатно раздает код сжатия", Проводной Интернет, wired.com.