Как установить и настроить mod_deflate   — для работы с VPS на CentOS ?

Модуль Apache mod_deflate - сжатие контента до его доставки клиенту.

 Что делает сжатие Gzip?

Сжатие Gzip позволяет сжимать ваши веб-файлы (в основном файлы HTML, CSS и JS), иногда до 70-80%. Эта гораздо меньшая сжатая версия файла затем отправляется в браузер посетителя вместо большего исходного файла. Браузер посетителя автоматически распакует сжатый файл и предоставит несжатый оригинальный файл вашему посетителю.

  GZIP (GNU Zip) — сжатие и распаковка gzip активно применяется для сжатия интернет-трафика. Сейчас gzip поддерживают большинство современных браузеров.

mod_deflate - это модуль Apache, который позволяет сжимать контент с вашего веб-сервера перед отправкой клиенту.
Сжатие текста минимизирует размер сетевых ответов, включая текстовое содержимое. Меньше загруженных байтов означает более быструю загрузку страниц.
Когда размер документов вашего сайта сжимается, клиенты могут быстрее загружать его. Это ценно не только для клиентов с более низкой пропускной способностью, но также учитывается поисковыми системами при оценке производительности вашего сайта и его рейтинга.


 CentOS 7 VPS - включить сжатие gzip на HTTP-сервере Apache.

Включение сжатие GZIP для вашего сайта экономит не менее 50% использования полосы пропускания. С помощью этого инструмента вы можете проверить, отправляет ли ваш веб-сервер правильный заголовок с поддержкой GZIP.

Зайдите на сайт - "Проверьте сжатие GZIP" и введите URL сайта или адрес определенной страницы (файла).

Проверьте сжатие GZIP

GZIP не включен - GZIP Is Not Enabled

Сжатие контента
Чтобы уменьшить расход трафика в сети, рекомендуется использовать сжатие для текстовых ресурсов (gzip, deflate или новый формат сжатия brotli). Сжатие вашего контента экономит полосу пропускания и улучшает время рендеринга, особенно на устройствах с медленным подключением к Интернету, а также снижает нагрузку на сервер. Поэтому сервер может поддерживать меньше открытых подключений.

Лучший способ включить сжатие - использовать mod_deflate или mod_gzip. Вы можете использовать их для автоматического сжатия всего содержимого HTML, CSS, JavaScript и XML. И даже изображения SVG, которые являются формой xml.


Mod_deflate включен в сервер Apache для CentOS 7.

Войдите в систему как пользователь root, используя ssh-клиент.
Убедиться, что mod_deflate установлен и включен - deflate_module (shared) можно введя команду:

apachectl -t -D DUMP_MODULES |grep deflate

root@avege ~

	  
Using username "root".
root@88.253.253.127's password:
Send automatic password					
[root@avege ~]# apachectl -t -D DUMP_MODULES |grep deflate

deflate_module (shared)
[root@avege ~]#

Apachectl — утилита управления web-сервером Apache
-t -D DUMP_MODULES : показать все загруженные модули
grep — утилита командной строки, используется для фильтрации текста по шаблону.
grep deflate — отфильтровать вывод grep для ключевого слова deflate.


Файл - mod_deflate.so

Файл mod_deflate.so является частью основного пакета httpd.
По умолчанию он находится в /etc/httpd/modules/mod_deflate.so. Кроме того, веб-сервер должен иметь возможность открыть этот файл. Для этого он должен иметь доступное для чтения разрешение - 755.

Убедитесь, что файл модуля установлен.
Щелкните правой кнопкой мыши на файле mod_deflate.so и выберите пункт Свойства или нажмите F9.

.

Проверьте, загружен ли модуль mod_deflate.so.
Откройте файл конфигурации базовых модулей Apache -
00-base.conf в каталоге - /etc/httpd/conf.modules.d/
(F4 или Править)

.

и убедитесь, что присутствует и не закомментирована строка:

LoadModule deflate_module modules/mod_deflate.so

Файл - 00-base.conf

#
# This file loads most of the modules included with the Apache HTTP
# Server itself.
#

LoadModule access_compat_module modules/mod_access_compat.so
LoadModule actions_module modules/mod_actions.so
LoadModule alias_module modules/mod_alias.so
LoadModule allowmethods_module modules/mod_allowmethods.so
LoadModule auth_basic_module modules/mod_auth_basic.so
LoadModule auth_digest_module modules/mod_auth_digest.so
LoadModule authn_anon_module modules/mod_authn_anon.so
LoadModule authn_core_module modules/mod_authn_core.so
LoadModule authn_dbd_module modules/mod_authn_dbd.so
LoadModule authn_dbm_module modules/mod_authn_dbm.so
LoadModule authn_file_module modules/mod_authn_file.so
LoadModule authn_socache_module modules/mod_authn_socache.so
LoadModule authz_core_module modules/mod_authz_core.so
LoadModule authz_dbd_module modules/mod_authz_dbd.so
LoadModule authz_dbm_module modules/mod_authz_dbm.so
LoadModule authz_groupfile_module modules/mod_authz_groupfile.so
LoadModule authz_host_module modules/mod_authz_host.so
LoadModule authz_owner_module modules/mod_authz_owner.so
LoadModule authz_user_module modules/mod_authz_user.so
LoadModule autoindex_module modules/mod_autoindex.so
LoadModule cache_module modules/mod_cache.so
LoadModule cache_disk_module modules/mod_cache_disk.so
LoadModule data_module modules/mod_data.so
LoadModule dbd_module modules/mod_dbd.so
LoadModule deflate_module modules/mod_deflate.so
LoadModule dir_module modules/mod_dir.so
LoadModule dumpio_module modules/mod_dumpio.so
LoadModule echo_module modules/mod_echo.so
LoadModule env_module modules/mod_env.so
LoadModule expires_module modules/mod_expires.so
LoadModule ext_filter_module modules/mod_ext_filter.so
LoadModule filter_module modules/mod_filter.so
LoadModule headers_module modules/mod_headers.so
LoadModule include_module modules/mod_include.so
LoadModule info_module modules/mod_info.so
LoadModule log_config_module modules/mod_log_config.so
LoadModule logio_module modules/mod_logio.so
LoadModule mime_magic_module modules/mod_mime_magic.so
LoadModule mime_module modules/mod_mime.so
LoadModule negotiation_module modules/mod_negotiation.so
LoadModule remoteip_module modules/mod_remoteip.so
LoadModule reqtimeout_module modules/mod_reqtimeout.so
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule setenvif_module modules/mod_setenvif.so
LoadModule slotmem_plain_module modules/mod_slotmem_plain.so
LoadModule slotmem_shm_module modules/mod_slotmem_shm.so
LoadModule socache_dbm_module modules/mod_socache_dbm.so
LoadModule socache_memcache_module modules/mod_socache_memcache.so
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
LoadModule status_module modules/mod_status.so
LoadModule substitute_module modules/mod_substitute.so
LoadModule suexec_module modules/mod_suexec.so
LoadModule unique_id_module modules/mod_unique_id.so
LoadModule unixd_module modules/mod_unixd.so
LoadModule userdir_module modules/mod_userdir.so
LoadModule version_module modules/mod_version.so
LoadModule vhost_alias_module modules/mod_vhost_alias.so

#LoadModule buffer_module modules/mod_buffer.so
#LoadModule watchdog_module modules/mod_watchdog.so
#LoadModule heartbeat_module modules/mod_heartbeat.so
#LoadModule heartmonitor_module modules/mod_heartmonitor.so
#LoadModule usertrack_module modules/mod_usertrack.so
#LoadModule dialup_module modules/mod_dialup.so
#LoadModule charset_lite_module modules/mod_charset_lite.so
#LoadModule log_debug_module modules/mod_log_debug.so
#LoadModule ratelimit_module modules/mod_ratelimit.so
#LoadModule reflector_module modules/mod_reflector.so
#LoadModule request_module modules/mod_request.so
#LoadModule sed_module modules/mod_sed.so
#LoadModule speling_module modules/mod_speling.so
 

Apache - включить сжатие

Чтобы начать использовать mod_deflate, вы должны указать, какие типы файлов должны быть сжаты. С одной стороны, форматы обычного текста могут значительно сокращаться по размеру путем сжатия, и поэтому имеет смысл применять его к файлам HTML, CSS или JavaScript. С другой стороны, обычно принято многие мультимедийные форматы, такие как Flash и изображения, предварительно сжимать, поэтому дополнительное сжатие будет бесполезным.

Для настройки mod_deflate, создайте в каталоге - /etc/httpd/conf.d/ новый файл конфигурации - mod_deflate.conf с кодом:

Файл - mod_deflate.conf (/etc/httpd/conf.d/)

<filesMatch "\.(js|html|css)$">
SetOutputFilter DEFLATE
</filesMatch>

Вышеприведенный код означает, что если файл имеет расширения .js, .html или .css он будет сжиматься (дефлироваться) через стандартную SetOutputFilter директиву Apache. Можно добавить другие расширения текстовых файлов, имеющееся на вашем сайте, например .png.

Пройдите - Файлы | Новый | Файл

.

В окне - Редактировать файл введите - mod_deflate.conf

.

Внесите изменения в директиву filesMatch

<filesMatch "\.(js|html|css|png)$">
SetOutputFilter DEFLATE
</filesMatch>

и нажмите на значок - .

.

Файл конфигурации mod_deflate.conf с включенным сжатием.

.


Вы можете поместить вышеуказанный код в основной файл конфигурации /etc/httpd/conf/httpd.conf. Однако лучше разделить такие конкретные детали конфигурации в другом файле. Для этой цели в CentOS 7 любой файл с расширением, .conf помещенный в каталог /etc/httpd/conf.d/, автоматически загружается благодаря директиве IncludeOptional conf.d/*.conf в конце основного файла конфигурации Apache.

mod_deflate имеет несколько собственных важных параметров конфигурации:
  • DeflateCompressionLevel - директива определяет, какой уровень сжатия должен использоваться, тем выше значение, тем лучше сжатие, но требуется больше процессорного времени для достижения этой цели. По умолчанию этот уровень равен 9, самый высокий уровень сжатия. 1 - наименьший уровень сжатия.
  • DeflateMemLevel - директива определяет, какой объем памяти может использоваться для сжатия Zlib (компрессионной библиотекой). Значение от 1 до 9, по умолчанию - 9, которое является самым высоким значением. Чтобы точно рассчитать допустимую память, вы должны умножить DeflateMemLevel на 16K.
  • DeflateWindowSize - директива определяет размер окна сжатия Zlib (значение от 1 до 15). Как правило, чем выше размер окна, тем выше может быть коэффициент сжатия и используется большее количество ресурсов сервера.

В большинстве случаев вы можете оставить указанные выше значения по умолчанию.

Однако, если вы подозреваете, что производительность вашего сервера значительно ухудшилась после использования mod_deflate, вы можете указать более низкие значения в конфигурационном файле /etc/httpd/conf.d/mod_deflate.conf следующим образом:

DeflateCompressionLevel 1

Что уменьшит уровень сжатия и приведет к увеличению размера файлов. Однако mod_deflate будет использовать меньше ресурсов CPU. Обязательно перезапустите Apache, для применения любых изменений.


Для веб-страниц на PHP (с сайта - Сжатие HTTP).
  Если ваш сервер не настроен на сжатие содержимого, и вы не можете изменить это, есть альтернатива - можно добавить одну простую строку PHP в начало ваших PHP-документов:
<? ob_start ( "ob_gzhandler"); ?>
Код должен быть вставлен до вывода любого содержимого. Это не так эффективно, как mod_deflate, но все же работает хорошо. 


После внесений изменений в файлах конфигурации обязательно перезапустите Apache.

Перезапустить сервер, используя скрипт управления apachectl —

apachectl restart

root@avege ~

     
Using username "root".
root@88.212.253.127's password:
Send automatic password
[root@avege ~]#  apachectl restart
[root@avege ~]#

Зайдите на сайт - "WhatsMyIP.org - Проверьте сжатие GZIP" и введите адрес определенной страницы или файла с вашего сайта.

.

Несжатый размер 47,7 KB.
Сжатый размер 12 KB.
Экономия: 74,9%

Можно проверить сжатие файлов изображений, например, png.

.

Размер несжатой страницы: 110,1 КБ
Размер сжатой страницы: 100,7 КБ
Экономия: 8,5%

Если использовать команду Photoshop «Сохранить для Web»,
то размер сжатой страницы со 110,1 КБ уменьшится до 26.8 KB. То есть в четыре раза.

.

Использование mod_deflate для сжатия файлов изображений неэффективно!
Так как Gzip в основном применяется для файлов HTML, CSS и JS.



Проверка ответа сервера.

Проверить сжатие gzip можно с помощью Яндекс Вебмастера.
Узнайте, доступен ли сайт для роботов Яндекса.

Ответ → Основной робот Яндекса

Mozilla/5.0 (compatible; YandexBot/3.0; +//yandex.com/bots)

Код статуса HTTP 200 OK
Время ответа сервера 58 мс
IP сайта 88.253.253.127
Кодировка UTF-8(unicode-1-1-utf-8, UTF8)
Размер страницы 11,94 КБ

Ответ сервера Apache

  • Server: Apache/2.4.6 (CentOS) PHP/7.2.12
  • Date: Tue, 13 Nov 2018 02:55:53 GMT
  • Accept-Ranges: bytes
  • Vary: Accept-Encoding
  • Content-Encoding: gzip
  • Content-Length: 11259
  • Keep-Alive: timeout=5, max=100
  • Connection: Keep-Alive
  • Content-Type: text/html; charset=UTF-8

Запуск, остановка и отключение службы Apache

запустить сервер, используя скрипт управления apachectl —

  apachectl start

остановить сервер —

  apachectl stop

перезапустить сервер как пользователь root —

  apachectl restart

root@avege ~

		
Using username "root".
root@88.212.253.127's password:
Send automatic password
Last login: Wed Oct 24 16:55:35 2018 from 95.105.64.70
[root@avege ~]# apachectl restart
[root@avege ~]#
				

Сервис PageSpeed Insights

PageSpeed Insights анализирует содержание веб-страницы и предлагает решения, которые позволят ускорить ее загрузку.
Показатель эффективности
В верхней части отчета PSI дает оценку, которая суммирует производительность страницы. Эта оценка определяется запуском Lighthouse для сбора и анализа лабораторных данных о странице.
Оценка 90 или выше считается быстрой, 50 - 90 считается средней, ниже 50 считается медленной.

Классификация быстрого, среднего, медленного

PSI также классифицирует данные на 3 категории, устанавливая следующие пороговые значения для быстрого / среднего / медленного, основанного на анализе набора данных CrUX:

Быстрый Средний Медленный
FCP [0, 1000 мс] (1000 мс, 2500 мс) более 2500 мс
FID [0, 50 мс] (50 мс, 250 мс) более 250 мс

Вообще говоря, быстрые страницы состовляют ~ 10%, средние страницы - 40%, а медленные страницы - 50%. Цифры округлены для удобства чтения. Эти пороговые значения применяются как к мобильным, так и к к персональным компьютерам и устанавливаются на основе человеческих восприятий.

Оценка скорости загрузки основана на данных, полученных методом имитации загрузки сайта с помощью инструмента Lighthouse.

.