Настройка PageSpeed в Nginx.

pagespeed ngx_pagespeed nginx ubuntu

В предыдущей статье я описал установку сервера Nginx с Page­Speed модулем от Google, ускоряющим и оптимизирующим работу сайта. В этой статье рассмотрим настройку модуля для использования на сайте.

Все параметры могут быть добавлены в контекст http {} файла nginx.conf, но в таком случае действие Page­speed будет распространяться на все сайты находящиеся на сервере. Если Page­speed нужен только для конкретного сайта, то лучше всего будет прописать настройки в контексте serv­er {} обслуживающим нужный сайт.

Я, например, прописываю все в отдельном файле, и подключаю его через include, куда надо.

Чтобы активировать модуль достаточно добавить директиву page­speed со значением on, значение off, соответственно, выключит Page­Speed. Помимо этого следует добавить page­speed File­CacheP­ath, для указания каталога кэша преобразованных файлов. Указанный каталог будет создан автоматически после перезапуска сервера.

Это минимальный набор опций, которого достаточно для запуска и работы Page­Speed. Работу модуля можно проверить следующим образом. Откройте сайт в браузере, включите режим разработчика и посмотрите заголовки. В Response Head­ers должно появиться x-page-speed:1.12.34.2-0.

pagespeed ngx_pagespeed nginx

На данный момент Page­Speed работает без дополнительных настроек. Но при этом делает все что должен: изображения сжимаются, код (HTML, CSS, JS) оптимизируется и т.д. Все это связано с дефолтным уровнем конфигурации.

Для облегчения настройки Page­Speed имеет три уровня конфигурации.

  • Core­Filters - максимальный набор фильтров подходящий для работы большинства сайтов. Является уровнем по умолчанию и активируется при запуске Page­Speed без дополнительных настроек.
  • Opti­mize­For­Band­width - минимальный набор фильтров. В основном оптимизирует и сжимает код.
  • PassThrough - полностью отключает все фильтры.

Уровни определяются директивой page­speed RewriteLev­el.

Каждый уровень может быть изменен под себя, с помощью добавления нужных или исключения ненужных фильтров.

Директива page­speed Dis­able­Filters исключает фильтры из конфигурации, а page­speed Enable­Filters добавляет. Фильтры указываются через запятую, например так.

Например мы хотим использовать уровень Core­Filters, но нас не все устраивает. Нам не нужно сжимать изображения и объединять CSS файлы в один. Но зато нужно встроить стили google-шрифтов непосредственно в HTML документ.

В таком случае конфигурация будет выглядеть так.

Чтобы полностью запретить использование определенного фильтра и исключить его из всех конфигураций используется директива page­speed For­bid­Fil­ters. Например для полного запрета использования фильтра resize_mobile_images нужно сделать так.

Core­Filters включает в себя следующий набор фильтров, который я хочу разобрать на примере своего сайта.

Ненужные мне фильтры я буду исключать из конфигурации, чтобы не производить лишней нагрузки на сервер.

Add Head исключаю, потому как сайт на Word­Press, страницы генерируются по шаблонам, <head> присутствует всегда, следовательно добавлять его не надо.

Фильтр Con­vert Gif to Png тоже удаляю, у меня используется всего два gif файла, оба файла с анимацией, а к анимированным gif данный фильтр не применяется.

Con­vert Meta Tags удаляю, сколько не смотрел, а метатегов с атрибутом http-equiv у меня на страницах нет.

Con­vert Png to Jpeg не нужен, у себя на сайте я не использую png, только jpg формат.

Jpeg Sub­sam­pling и Recom­press Png отключаю за ненадобностью, так же как и Resize Images, Word­Press по умолчанию уменьшает размеры изображений при загрузке и добавляет файлы нужного размера.

Все остальное оставляю на месте. В итоге получилось следующее.

С такой конфигурацией сайт набирает 97/100 в тесте Page­Speed Insights, остается только перенести CSS из шапки в подвал сайта, но этим мне заниматься неохота, меня и так устраивает, хотя это сильно влияет на оценку мобильных страниц, там всего лишь 76 баллов.

ngx_pagespeed pagespeed nginx ubuntu

Узнать какие наборы фильтров входят в уровни Core­Filters и Opti­mize­For­Band­width можно здесь, там же расписано для чего нужен тот или иной фильтр. Вся документация находится здесь.

Вернемся к минимальной конфигурации из начала статьи.

Чтобы постоянно не сжимать и переписывать файлы, тем самым нагружая сервер, Page­Speed кэширует ресурсы сохраняя их в указанном каталоге.

Кэшем можно и нужно управлять. На сайтах с большим количеством посетителей и трафика, кэш может разрастись и заполнить весь диск, поскольку изначально никаких ограничений на использование диска не устанавливается.

Основные директивы для управления кэшем.

  • page­speed File­Cache­SizeKb - задает максимальный размер кэша в килобайтах.
  • page­speed File­CacheClean­In­ter­valMs - задает интервал очистки кэша в миллисекундах.
  • page­speed File­CacheIn­ode­Lim­it - задает лимит индексных дескрипторов (inode) по достижению которого кэш будет очищен.

Подобная конфигурация будет работать следующим образом. Процесс очистки кэша будет запускаться каждый час, согласно заданного интервала, но очищаться кэш будет не всегда. Кэш будет очищен только в том случае, если его размер превысит заданные лимиты в 102 мегабайта или в 500000 inodes. Подробнее про настройку кэша можно прочитать здесь.

Последнее что заслуживает внимания - консоль Page­Speed. Консоль или админ панель, это набор графиков, гистограмм и прочих инструментов позволяющих просматривать статистику работы модуля и вовремя узнавать о проблемах.

Чтобы активировать консоль, добавьте следующие настройки в конфигурацию Page­Speed.

Админ панель станет доступна по адресу yourdomain.com/pagespeed_admin/. Подробнее о настройках консоли можно прочитать здесь.

В итоге у меня получился вот такой файл настроек Page­Speed.

На этом все. Спасибо за внимание.