Developer Toolbox

gzip (DEFLATE)

Подивіться, як gzip зменшує текст: повтори стають короткими копіями, а коди Huffman дають частим символам менше біт.

  • Вікно: 32 КБ
  • Копії: 3-258 байтів
  • Коди: до 15 біт
  • Обгортка gzip: 18 байтів
Що це означає?
  • Літерал: символ, записаний як є, бо з його позиції не починається повтор довжиною 3 символи й більше.
  • Копія: довжина й відстань, що означають «візьми стільки-то символів з такої-то відстані назад». Копія може перекривати текст, який сама створює.
  • Вікно: як далеко назад компресор може шукати повтор. У gzip це 32 КБ, у Brotli до 16 МБ.
  • Код Huffman: послідовність біт для кожного символу, коротша для частих символів. Будується за деревом, у якому знову й знову об'єднуються два найрідкісніші символи.
  • Префіксний код: жоден код не є початком іншого, тому потік кодів можна прочитати назад без роздільників.
LZ77 і Huffman крок за кроком 0 / 19 кроків

Символів у тексті: 23, без стиснення він займає 184 біт. Компресор читає його зліва направо і в кожній позиції перевіряє, чи траплялося раніше те, що йде далі.

Пробіл: відтворення або пауза. Стрілки ліворуч і праворуч: крок. Home і End: на початок або в кінець.

Спробуйте: Наберіть ту саму літеру багато разів. Одна копія з відстанню 1 покриває їх усі, бо копія може перекривати текст, який сама створює.

Як це працює

gzip виконує DEFLATE у два етапи. LZ77 проходить текстом і в кожній позиції шукає найдовшу послідовність байтів, яка вже траплялася в останніх 32 КБ; замість того щоб повторювати ці байти, він записує пару: скільки байтів скопіювати (3-258) і як далеко назад вони розташовані. Потім усе, що вийшло (літерали й ці пари), записується кодами Huffman: часті символи отримують короткі коди, рідкісні довгі. Результат gzip загортає в 10-байтовий заголовок і 8-байтовий хвіст із контрольною сумою CRC-32.

Коли варто використовувати

gzip стискає текст, у якому багато повторів: HTML, CSS, JavaScript, JSON, логи, CSV. Його розуміють усі браузери й сервери, він швидкий на будь-якому рівні, і це надійний вибір за замовчуванням для стиснення відповідей на льоту. У вже стиснутих даних, як-от JPEG, PNG, WOFF2 чи ZIP, повторів не залишилося, тож gzip лише додає свою обгортку.

На вашому тексті

Ті самі два етапи, але їх виконує справжній gzip (рівень 6) на довшому тексті. Вставте свій текст або візьміть його з інструмента «Стиснення gzip і Brotli».

Введення