![](https://habrastorage.org/storage2/022/faf/8e7/022faf8e74a4004fde8f1a72bca125f4.png)
Новый алгоритм является реализацией стандартных алгоритмов Deflate, поэтому он совместим с zlib и gzip, а разархивирование данных уже поддерживается всеми браузерами. Достаточно подключить Zopfli на сервере. Например, его можно использовать с веб-сервером Nginx без изменений в модуле gzip, просто указав новый «прекомпрессор».
Правда, сжатие с помощью Zopfli требует примерно в 100 раз больше ресурсов, чем gzip, зато декомпрессия в браузере осуществляется с той же скоростью.
В статье (pdf) автор объясняет, за счёт каких оптимизаций удалось достигнуть повышения уровня сжатия. Как известно, Deflate использует комбинацию алгоритма Хаффмана и алгоритма LZ77. Первый кодирует символы сообщения кодами переменной длины, в зависимости от частоты встречаемости этих символов. Второй работает по принципу «скользящего окна», когда второе и последующие вхождения некоторой строки символов в сообщении заменяются ссылками на её первое вхождение. Существующие реализации Deflate применяют различные эвристики для поиска подходящих вхождений и оптимизации анализа данных перед кодированием, чтобы понять, какой метод лучше применять в каждом случае, с построением хеш-таблицы. Уровень сжатия (от -1 до -9) определяет количество времени и ресурсов, которое выделяется для использования эвристик, обычно путём изменения размеров строк для поиска в хеш-таблице.
Как сказано в статье автора, Zopfli использует более ресурсоёмкие техники сжатия, основанные на моделировании энтропии и алгоритме поиска кратчайшего пути в графе всех возможных представлений Deflate.
Zopfli позволяет указывать уровни сжатия от 5 до 2000. В статье (pdf) приводится сравнение уровня сжатия в разных тестах.
![](https://habrastorage.org/storage2/a94/57f/e8c/a9457fe8c63b3cd7c67e7d306e12851f.png)
На реальных файлах, например, несжатом jQuery, сравнение архиваторов выглядит примерно так:
Файл: 268381 байт Zopfli (-i1000) 75730 байт, 950 мс Gzip (-9) 79388 байт, 30 мс
Правда, по времени Zopfli проигрывает всем, он работает примерно в 81 раз медленнее самого быстрого алгоритма gzip-9. Опять же нужно подчеркнуть, что декомпрессия в браузере осуществляется с такой же скоростью.
Установка и использование Zopfli:
git clone https://code.google.com/p/zopfli/ cd zopfli make chmod +x zopfli ./zopfli >FILENAME>