Brotli — это современный алгоритм сжатия без потерь, разработанный Google в 2015 году. Он широко используется в HTTP через Content-Encoding: br для сжатия HTML, CSS и JavaScript. Brotli относится к тому же семейству алгоритмов, что и DEFLATE: поиск совпадений в словаре и энтропийное кодирование. Однако у него есть дополнительное преимущество — большой статический словарь фраз, которые уже встречаются в интернете.
Как это работает (обучающая модель на этой странице):
1. Статический словарь — поиск совпадений с известными фразами (частями URL, HTML-тегами, распространёнными словами), не извлекая их исключительно из самого файла
2. Обратные ссылки LZ — копирование фрагментов из уже обработанного текста, если словарь не помогает
3. Литералы — запись отдельных символов, когда совпадений нет ни в словаре, ни в ранее обработанном тексте
4. Энтропийное кодирование — назначение коротких кодов часто встречающимся командам (настоящий Brotli использует более сложные коды, зависящие от контекста)
Почему Brotli часто эффективнее gzip в интернете:
gzip изучает структуру только внутри текущего потока данных. Brotli также использует общие знания о вебе: "https://", "www.", "</div>" и тысячи других фрагментов. Эти заранее известные данные доступны обеим сторонам HTTP-соединения и не требуют дополнительной передачи.
Временная сложность:
Поиск совпадений концептуально похож на LZ77 / DEFLATE; качество зависит от размера окна и алгоритма поиска
Поиск по словарю оптимизирован для высокой скорости в промышленных реализациях кодеков
Пространственная сложность:
Кодировщику и декодировщику необходимы статический словарь (около 120 КБ в полной реализации Brotli) и скользящее окно
Свойства:
- Сжатие без потерь; RFC 7932
- Отлично подходит для текстовых веб-ресурсов, но менее эффективен для уже сжатых бинарных данных
- Более высокие уровни сжатия обменивают производительность CPU на меньший размер данных (CDN / этап сборки vs сжатие на лету)
- Эта визуализация представляет собой обучающий процесс, а не побитово совместимый кодировщик Brotli
Запомните: Brotli ≈ идея DEFLATE + статический словарь, учитывающий особенности веба + более эффективное энтропийное кодирование.
Похожие алгоритмы
Частые вопросы
- Что такое Brotli?
- Brotli — это современный алгоритм сжатия без потерь, разработанный Google в 2015 году. Он широко используется в HTTP через Content-Encoding: br для сжатия HTML, CSS и JavaScript. Brotli относится к тому же семейству алгоритмов, что и DEFLATE: поиск совпадений в словаре и энтропийное кодирование. Однако у него есть дополнительное преимущество — большой статический словарь фраз, которые уже встречаются в интернете.
- Какова сложность Brotli?
- Brotli объясняется с помощью пошаговой визуализации, включая временную и пространственную сложность.
- Для кого предназначена визуализация Brotli?
- Визуализация Brotli рассчитана на продвинутый уровень в категории «Сжатие данных». Полезна для студентов, подготовки к собеседованиям и практического изучения.
- Какие алгоритмы связаны с Brotli?
- В той же категории (Сжатие данных) вы можете изучить: Run-Length Encoding, LZ77, LZW. Каждый из них имеет интерактивную визуализацию.