Два способа подключения сжатия Gzip передаваемых файлов веб-сервером клиенту (браузеру):
1. C помощью gzip_module веб-сервера Apache
2. С помощь модуля ngx_http_gzip_module
1. Способ номер 1 подразумевает организацию сжатия путём подключения модуля gzip_module веб-сервера Apache в панели управления хостингом. Данный модуль по-умолчанию ВЫКЛючен.
- ВКЛючаем модуль в панели управления хостингом (далее ПУХ) → Веб-сервер → Управление модулями → Дополнительные модули:

- Затем создаём файл .htaccess в папке с сайтом. На хостинге nic.ru это папка docs, размещается она в папке с именем сайта: ~/xit.org.ru/docs. И в файл .htaccess добавляем директивы:
1 2 3 4 5 6 7 8 9 |
<IfModule mod_gzip.c> mod_gzip_on Yes mod_gzip_dechunk Yes mod_gzip_item_include file \.(html?|txt|css|js|php)$ mod_gzip_item_include mime ^text/.* mod_gzip_item_include mime ^application/x-javascript.* mod_gzip_item_exclude mime ^image/.* mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.* </IfModule> |
- Делается это в ПУХ → Веб-сервер → Сайты → имя_сайта.ру

- Затем редактируем файл xit.org.ru/conf/virtual.conf.manual. А именно вставляем код следующий ниже перед последним тэгом </VirtualHost>. Т.е. в конце файла находим строку в который написан тэг указанный выше и перед ним вставляем код:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
<IfModule mod_gzip.c> mod_gzip_on Yes mod_gzip_can_negotiate Yes mod_gzip_update_static Yes mod_gzip_static_suffix .gz AddEncoding gzip .gz mod_gzip_minimum_file_size 200 mod_gzip_maximum_file_size 5000000 mod_gzip_maximum_inmem_size 60000 mod_gzip_min_http 1000 mod_gzip_handle_methods GET POST mod_gzip_temp_dir /tmp mod_gzip_keep_workfiles No mod_gzip_dechunk Yes mod_gzip_send_vary On mod_gzip_item_include file \.htm$ mod_gzip_item_include file \.html$ mod_gzip_item_include file \.php$ mod_gzip_item_include file \.txt$ mod_gzip_item_include mime ^text/.* mod_gzip_item_include file \.js$ mod_gzip_item_include file \.css$ mod_gzip_item_include file \.rdf$ mod_gzip_item_include file \.xml$ mod_gzip_item_include file \.rss$ mod_gzip_item_include mime ^application/x-httpd-php mod_gzip_item_include mime ^application/x-javascript mod_gzip_item_include mime ^application/javascript mod_gzip_item_include mime ^text/css$ mod_gzip_item_include mime ^text/plain$ mod_gzip_item_include mime ^text/xml$ mod_gzip_item_exclude reqheader "User-agent: Mozilla/4.0[678]" </IfModule> </VirtualHost> ## posledniy tag, pered nim vstavlyaem kod vishe.## |
- Сохраняем файл и перезапсукаем веб-сервер для применения настроек, меню ПУХ → Веб-сервер:

2.NGINX Данный способ, он же на мой взгляд предпочтительный, также подразумевает перевод сайт в ручной режим работы. Но конфиг сайта веб-сервера Apache мы не трогаем, а редактируем файл конфигурации сайта веб-сервера NGINX. Он размещается в папке ~/etc/nginx/xit.org.ru.vhost.conf.
Способ предопчтителен по причинам:
- не требует подключения модуля gzip_module для веб-сервера Apache, что экономит оперативную память
- потребляет меньше ресурсов процессора и работает быстрее
- Итак, в файл xit.org.ru.vhost.conf добавляем код:
1 2 3 4 5 6 |
gzip on; gzip_buffers 16 8k; gzip_comp_level 9; # Устанавливает степень сжатия ответа методом gzip. Допустимые значения находятся в диапазоне 1..9. gzip_min_length 10; # Устанавливает минимальную длину ответа в байтах, который будет сжиматься методом gzip. Длина определяется только из поля “Content-Length” заголовка ответа. gzip_types text/plain text/css application/x-javascript; # Перечисляем типы файлов, которые будем сжимать gzip_http_version 1.0; # Устанавливает минимальную HTTP-версию запроса, необходимую для сжатия ответа, по-умолчанию версия 1.1 |
3. Как проверить отдаёт веб-сервер контент в сжатом виде или нет.
- При помощи утилиты telnet общаемся с сервером и запрашиваем один из файлов тип которого задан для сжатия:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
~$ telnet xit.org.ru 80 Trying 194.85.92.168... Connected to xit.org.ru. Escape character is '^]'. # Соединение установлено, пишем команды: GET /wp-content/put_do_zaprashivaemogo_faila/style.css HTTP/1.1 # ENTER Host: xit.org.ru # ENTER Accept-Encoding:gzip # ENTER #получаем в ответ от сервера, он может отличаться от моего: HTTP/1.1 200 OK Server: nginx/1.0.6 Date: Tue, 10 Jul 2012 14:07:24 GMT Content-Type: text/css Last-Modified: Sat, 07 Jul 2012 19:35:02 GMT Transfer-Encoding: chunked Connection: keep-alive Content-Encoding: gzip # сервер сообщил, что поддерживает сжатие и передаёт запрошенный файл в свжатом виде # Ниже будет идти абракадабра из сжатого контента |
- При помощи встроенного в браузер режима отладки тоже можно увидеть отдаётся ли файл в сжатом виде. В Googl Chrome такой режим активируется сочетанием клавиш CTRL+SHIFT+I, затем выбираем вкладку «Network» и жмём CTRL+F5. Страница обновляется, выбираем в левом столбце файл, тип которого задан для сжатия и смотрим правее «Respons Headers» на наличие
1Content-Encoding: gzip