Алгоритми стиснення: опис, основні прийоми, характеристики

Схеми HTTP: DEFLATE і GZIP

Сьогодні в інтернеті використовують два широко використовуваних алгоритмів стиснення тексту HTTP: DEFLATE і GZIP.

DEFLATE – зазвичай об’єднує дані, із застосуванням LZ77, кодування Хаффмана. GZIP – файл використовує DEFLATE всередині, поряд з деякими цікавими блокуваннями, евристикою фільтрації, заголовком і контрольною сумою. В цілому, додаткове блокування та евристика, використовують GZIP, дають якісні коефіцієнти стиснення, ніж просто один DEFLATE.

Протоколи даних наступного покоління – SPDY і HTTP2.0, підтримують стиснення заголовків з допомогою GZIP, тому більша частина веб-стека буде використовувати і в майбутньому.

Більшість розробників просто завантажують незжатий контент і покладаються на веб-сервер для “зменшення” даних на льоту. Це дає відмінні результати і простий у використанні алгоритм стиснення графічних зображень. За замовчуванням на багатьох серверах встановлений GZIP з рівнем 6, найбільший рівень якого дорівнює 9. Це зроблено навмисно, що дозволяє серверам компресувати дані швидше за рахунок більшого вихідного файлу.

Формати BZIP2 і LZMA, що створюють більш компактні форми чим GZIP, які при цьому розпаковуються швидше.

LZMA можна вважати далеким родичем GZIP. Обидва вони починаються з популярного словника LZ, за яким слід система статистичного кодування. Однак покращена LZMA-можливість компресувати файли малого розміру полягає в його «просунутих алгоритмах зіставлення і вікон LZ.