Brotli поток (.br)
IETF СтандартBrotli е алгоритъм за компресия без загуба с отворен код, разработен от Google, специално оптимизиран за уеб типография (WOFF2) и HTTP кодиране на съдържанието (Content-Encoding: br) за ускоряване на доставката на интернет страници.
Конвертиране от BROTLI към GZIP
Безплатен конвертор от BROTLI към GZIP в браузъра. Конвертирайте файлове незабавно на вашето устройство.
Проверка и метаданни
Операционните системи и файловите анализатори идентифицират Brotli файлове чрез проверка на началната двоична байтова последователност:
Байтов подпис на заглавката (сигнатурни байтове)
Операционните системи и файловите анализатори идентифицират Brotli файлове чрез проверка на началната двоична байтова последователност:
HEX ПОДПИС (ОФСЕТ 0):
CE B2 CF 81ASCII ПРЕДСТАВЯНЕ: βÏ\x81
Стандартизация: IETF RFC 7932
Технически спецификации
| Контейнерна архитектура | Сурова битова последователност с незадължително задаване на размера на прозореца и метаблокове |
| Компресия | Плъзгащ се речник LZ77 (до 16 MB), моделиране на контекста от втори ред и статичен речник от 120 KB |
| Поредност на байтовете (Endianness) | Потокът се обработва в ред от младшия към старшия байт (Little-Endian). |
| Цветови пространства | Неприложимо (поток за компресия на данни) |
| Канали и структура | Компресия на потоци от байтове с общо предназначение |
| Максимални размери | Поток от байтове с произволна дължина (поддържа неограничено поточно предаване) |
| Прозрачност | Без загуби, с точно възстановяване на байтовете при декомпресия |
| Поточно предаване и прогресивно зареждане | Разделянето на метаблокове позволява непрекъснато поточно предаване на HTTP блокове |
Техническа сравнителна матрица: Brotli спрямо конкуренти
| Технически атрибут | Brotli (Текущ) | GZ | ZSTD | DEFLATE |
|---|---|---|---|---|
| Вграден статичен речник | Включен уеб речник с размер 120 KB | Няма (само динамичен) | Потребителски обучими речници | Няма (само динамичен) |
| Компресия за уеб (спрямо Gzip) | С 15% до 25% по-малък размер от Gzip | Базов стандарт (Gzip) | С 10% до 20% по-малък размер от Gzip | Базов Deflate |
| HTTP Content-Encoding | 'Content-Encoding: br' | 'Content-Encoding: gzip' | 'Content-Encoding: zstd' | 'Content-Encoding: deflate' |
| Основна цел на дизайна | Пренос на уеб текст и уеб шрифтове | Обща файлова компресия за Unix | База данни в реално време и приемане на данни | Основен алгоритъм за компресия |
Често срещани видове повреди и ръководство за възстановяване на шестнадесетични данни
Браузърът не успява да зареди ресурс с грешка 'ERR_CONTENT_DECODING_FAILED'.
Първопричина: Прокси сървърът или уеб сървърът е прекъснал Brotli потока преди предаването на крайния метаблок.
Възстановяване: Изчистете кеша на браузъра, проверете настройките за компресия на сървъра или декомпресирайте локално чрез File2File.app.
Анализ на сигурността и вектори на атака към парсера
Статичният речник и контекстното моделиране на Brotli изискват стриктни проверки на границите на паметта срещу деформирани обратни препратки (back-references).
Известни вектори на атака
- Четене на указател извън позволените граници при препращане към отмествания в статичния речник извън размера на таблицата.
- Бомба за декомпресия (еквивалент на zip bomb), изтощаваща клиентската памет от малки полезни товари.
- Препълване на буфера по време на преоразмеряването на пръстеновидния буфер с плъзгащ се прозорец (sliding window ring buffer).
Най-добри практики за защита: Наложете максимални размери на изходния буфер по време на декомпресията на ненадеждни Brotli потоци.
Исторически произход и етапи
Основни предимства
- За HTML, CSS и JavaScript ресурси в уеб може да постигне с 15% до 25% по-добър коефициент на компресия от Gzip.
- Включва предварително дефиниран статичен речник от 120 KB с често срещани уеб думи, HTML тагове и фрази.
- Изключително висока скорост на декомпресия, осигуряваща близка до мигновената визуализация на страниците от страна на клиента.
Технически ограничения и минуси
- Компресията на ниво 11 е изчислително скъпа (най-подходяща за предварителна компресия на статични ресурси).
- Изисква HTTPS във всички уеб браузъри за предотвратяване на повреда от прозрачни прокси сървъри.
- Суровите файлове с разширение .br нямат вградени имена на файлове или хедъри за права без външно контейнеризиране.
Интересни технически факти
- Brotli е кръстен на „Brötli“, което означава „малък хляб“ на швейцарски немски.
- Статичният речник с размер 120 KB вътре в Brotli съдържа хиляди често срещани английски, испански, немски, китайски и HTML фрагменти.
- Brotli се поддържа от основните уеб сървъри и браузъри, но делът му в трафика зависи от услугата и типа на отговора.
Често задавани технически въпроси
Защо Brotli е по-бърз от Gzip за уебсайтове?
В някои случаи Brotli създава по-малки текстови файлове за уеб от Gzip, но разликата зависи от съдържанието, настройките за компресия и реализацията.
Защо Brotli изисква HTTPS?
Уеб браузърите поддържат Brotli само през защитени HTTPS връзки, тъй като старите прозрачни прокси сървъри в интернет биха разчели погрешно или биха повредили новото кодиране 'br'.
Как мога да декомпресирам .br файл?
Можете незабавно да декомпресирате .br или .brotli файлове в обикновен текст или оригинални файлове с помощта на File2File.app директно във вашия уеб браузър.