Що таке стиснення GZIP?
GZIP — це формат файлів стиснення без втрат, визначений RFC 1952. Він обгортає корисне навантаження, створене алгоритмом DEFLATE (RFC 1951), який поєднує зворотні посилання LZ77 з кодуванням Хаффмана для зменшення повторюваних даних до компактного потоку байтів.
Як працює стиснення GZIP?
Ваше введення повністю обробляється у вашому браузері за допомогою нативного API CompressionStream('gzip'). Основні кроки такі:
- Інструмент перетворює ваш текст або файл на потік байтів (UTF-8 для текстового введення).
- Ці байти подаються через
CompressionStream, налаштований для форматуgzip. - Браузер застосовує DEFLATE: прохід LZ77 зі ковзним вікном знаходить повторювані послідовності, а кодування Хаффмана призначає коротші коди частим символам.
- 10-байтний заголовок gzip та 8-байтний нижній колонтитул (CRC32 оригінальних даних плюс оригінальна довжина за модулем 2^32) обгортаються навколо корисного навантаження DEFLATE, утворюючи стандартний контейнер .gz.
- Результат відображається як Base64 або hex для текстового введення або пропонується як файл .gz для завантаження для двійкового введення.
Навіщо стискати за допомогою GZIP?
- Менші корисні навантаження: текст, JSON, HTML, CSS та вихідний код зазвичай зменшуються до частки від свого оригінального розміру.
- Галузевий стандарт: GZIP розуміється практично кожним HTTP-сервером, CDN, браузером, архіватором та стандартною бібліотекою мови програмування.
- Конфіденційність: стиснення відбувається повністю у вашому браузері. Введення ніколи не надходить на наші сервери.
- Готовий до зворотного перетворення: вихідні дані розпаковуються за допомогою CLI
gunzip, за допомогою HTTPContent-Encoding: gzipта будь-якого RFC 1952-сумісного читача у Python, Node.js, Go, Java або Rust.
Які поширені застосування стиснення GZIP?
GZIP використовується в мережі та в інструментах командного рядка:
- HTTP-передача: веб-сервери стискають відповіді за допомогою GZIP, щоб сторінки завантажувалися швидше по мережі.
- Архівування журналів: довгострокові серверні журнали зберігаються як файли .gz для скорочення використання диска.
- Резервні копії та пакунки: tarball-архіви (.tar.gz) стискають цілі дерева каталогів для переносимого розповсюдження.
Як виглядає приклад стиснення GZIP?
JSON-документ розміром 1 КБ із багатьма повторюваними назвами полів зазвичай стискається приблизно до 200–300 байтів — четверо- або п'ятикратне зменшення розміру. Великі текстові журнали часто стискаються на 90% і більше. Вхідні дані, що вже стиснені (JPEG, PNG, MP4, ZIP), більше не зменшаться і можуть вирости на кілька байтів рамки GZIP.
Цей GZIP Compressor створює стандартний вивід RFC 1952 безпосередньо у вашому браузері. Чи зменшуєте ви корисне навантаження перед передачею, чи створюєте файл .gz для архіву — результат взаємодіє з кожним GZIP-сумісним інструментом у мережі.