Общий словарь сжатия: новый рубеж в Интернете
103
Общий словарь сжатия: новый рубеж в Интернете
Сжатие (компрессия) было частью Интернета с самого начала.
HTTP-заголовку content-encoding как минимум столько же лет, сколько протоколу HTTP/1.0 (90-е годы).
Более 15 лет Gzip был самым популярным вариантом кодирования как для статического, так и для динамического контента, с хорошими скоростями и коэффициентами сжатия и распаковки.
В 2010-х годах появился новый формат сжатия - Brotli. Благодаря превосходным коэффициентам сжатия он стал де-факто сжатием для статического контента. Что касается динамического контента, то здесь мнения жюри неоднозначны.
И Gzip, и Brotli используют LZ77, поэтому они работают с отсылками к ранее просмотренным данным.
Грубый пример: текст ABCDEFG-ABCDEFG может быть представлен более компактно как ABCDEFG-{0,7}, где {0,7} - это указатель на ранее просмотренные данные.
Уникальной фишкой реализации Brotli по сравнению с Gzip является включение предопределенного словаря, заполненного обычным текстом, встроенным в спецификацию.
Поскольку и кодер (сервер), и декодер (браузер) имеют этот словарь, встроенный в их реализацию Brotli, то обращения могут быть сделаны к данным этого словаря, а не только к уже просмотренным данным. Это может помочь достичь лучшего коэффициента сжатия.
Brotli также поддерживает использование внешних словарей.
Если один и тот же внешний словарь доступен для использования во время кодирования и декодирования, можно достичь более высоких коэффициентов сжатия (при условии, что словарь имеет отношение к кодируемым данным).
Системы, владеющие обоими концами, могут сократить передачу данных или уменьшить размер хранилища файлов.
До настоящего времени это не было актуально для Интернета.
До сегодняшнего дня...
О том, как используя кастомные словари можно будет сжимать JS скрипты, приложения и целые страницы до 4% от исходного размера подробно рассказано в статье:
https://yonifeng.com/blog/shared-compression-dictionaries/
@MikeBlazerX

– https://t.me/MikeBlazerX
Источник новости https://t.me/mikeblazerx/1388...

