Сжатие текстовых файлов на сервере

6 июня 2012, 9:38

Браузер в каждом запросе к серверу в поле «Accept-Encoding» может указать, какие методы сжатия он поддерживает. Сервер, отвечая на запрос, может выбрать один из указанных браузером методов и, высылая сжатое тело ответа, указать в заголовке (в поле «Content-Encoding»), какой именно метод был выбран.

На данный момент браузеры совокупно поддерживают следующие методы сжатия:

  • gzip (x-gzip) —два метода gzip и deflate используют один и тот же алгоритм сжатия — DEFLATE (RFC 1951), использующий комбинацию алгоритма LZ77 и кодирования Хаффмана. В методе gzip (RFC 1952) перед сжатым потоком добавляется десять байт заголовка, а после — восемь байт, состоящие из контрольной суммы (CRC32) и длины несжатых данных;
  • deflate (x-deflate) — представляет собой сжатый алгоритмом DEFLATE поток без заголовка и других метаданных;
  • compress (x-compress) — в данном случае тело ответа такое же, как если бы оно было сжато UNIX-программой compress. Compress использует алгоритм LZC, являющийся реализацией LZW (Lempel— Ziv—Welch), с указателями переменного размера, как в алгоритме LZ78;
  • bzip2 (x-bzip, bzip) — тело ответа совпадает с результатом работы программы bzip2, алгоритм более эффективен, чем compress и семейство DEFLATE, но работает значительно медленнее. В bzip2 применяются преобразование Барроуза-Уилера, MTF-преобразование (move-to-front) и кодирование Хаффмана;
  • sdch (Shared Dictionary Compression Over HTTP) — относительно новый, предложенный компанией Google в сентябре 2008 года метод уменьшения избыточной информации в вебе. Основная идея — не передавать дважды одинаковые куски документа (например, шапку, «подвал» страницы, общие CSS- и JavaScript-файлы). Метод построен на алгоритме VCDIFF (RFC3284), ответ дополнительно может быть сжат любым другим поддерживаемым браузером методом сжатия (например, gzip). Этот метод сильно отличается от прочих, использовать его имеет смысл только для группы страницы.

Самый простой вариант передавать текстовые файлы в сжатом виде — прописать в .htaccess следующие директивы:

##AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript##

Кстати, Mod_deflate для Apache версий 2.0.44 и более ранних поставляется со степенью сжатия, настроенной для большей скорости, а не для большего сжатия. Эта конфигурация может быть изменена при помощи этих советов. Конфигурационная директива включается, начиная с Apache версии 2.0.45.

2 комментария

Brey

Thank you for sharing in this article I can learn a lot and http://www.obatjamu.com/ could also be a reference I hope to read the next your article update

Ваш комментарий

адрес не будет опубликован

ХТМЛ не работает


Ctrl + Enter