Thank you for reading this post, don't forget to subscribe!
Mod_pagespeed – один из самых популярных модулей Apache, фильтр вывода, функциональность которого можно настроить при помощи конфигурационных файлов или файлов .htaccess. Фильтр вывода – это программа, которая преобразует данные перед отправкой на клиент. Другими словами, это уровень между сайтом и данными, которые получает браузер пользователя при посещении URL-адреса.
Основная задача mod_pagespeed – ускорение сайтов. Модуль использует фильтры для уменьшения размеров файлов, благодаря чему сокращается количество обращений браузера к требуемой информации и, соответственно, продолжительность кэширования этих файлов.
Установка mod_pagespeed
Установка mod_pagespeed довольно проста и зависит от операционной системы. В Ubuntu и Debian (и в любом другом дистрибутиве Linux, который использует пакеты .DEB) есть готовые пакеты, которые достаточно загрузить и установить. В остальных дистрибутивах нужно скачивать и собирать исходники.
В 64-битной версии системы (рекомендуется):
wget https://dl-ssl.google.com/dl/linux/direct/mod-pagespeed-stable_current_x86_64.rpm
В 32-битной версии (нежелательно):
wget https://dl-ssl.google.com/dl/linux/direct/mod-pagespeed-stable_current_i386.rpm
Затем наберите:
yum install at
Примечание: если утилита at еще не установлена, используйте:
rpm -U mod-pagespeed-*.rpm
Удалите загруженный пакет:
rm mod-pagespeed-*.deb
Примечание: установка модуля из исходников выходит за рамки данной статьи.
После установки модуль активируется автоматически. Перезапустите Apache для корректной работы mod_pagespeed:
/etc/init.d/httpd restart
Готово! mod_pagespeed установлен на выделенный сервер и готов к работе. Проверить это можно, просмотрев заголовки ответа страниц: появится значение X-Mod-Pagespeed и номер установленной версии модуля.
Установочный пакет mod_pagespeed обрабатывает большое количество удобных конфигураций «из коробки». На самом деле, Apache имеет отдельные стандартные настройки для этого модуля, которые включаются автоматически. Версия mod_pagespeed, которая будет установлена и включена, зависит именно от версии Apache. Если на сервере используется Apache 2.2, будет установлен модуль mod_pagespeed.so; пользователи Apache 2.4 получат mod_pagespeed_ap24.so.
Примечание: модуль mod_pagespeed работает на Apache 2.2 и выше. Веб-сервер Apache 2.4.1 не может работать с этим модулем из-за бага. Рекомендуется использовать Apache 2.4.2 и выше.
Кроме того, в установке Apache появились новые конфигурационные файлы. Основной конфигурационный файл, — pagespeed.conf, — можно найти в:
/etc/httpd/conf.d/
Настройка mod_pagespeed
При желании на данном этапе можно остановиться, поскольку стандартных настроек mod_pagespeed будет вполне достаточно в большинстве случаев. Однако, отредактировав настройки, можно добиться гораздо большей производительности.
Примечание: настройки mod_pagespeed, как правило, индивидуальны для каждого сайта; рекомендуется поэкспериментировать и подобрать наиболее подходящий сайту вариант.
Данное руководство охватывает несколько общих настроек модуля.
Способы настройки mod_pagespeed
Существует несколько способов настройки модуля mod_pagespeed. Можно использовать ранее упомянутый конфигурационный файл pagespeed.conf, чтобы настроить его для всего сервера. Также можно поместить конфигурации в директиве VirtualHost для виртуального хоста или сайта Apache. Кроме того, можно задать директивы в файле .htaccess (что обычно делается для mod_rewrite).
Наименее производительным из всех этих вариантов является последний, поскольку серверу придется загружать файл .htaccess при каждом запросе. Файл pagespeed.conf загружается вместе с Apache, благодаря чему он является идеальным местом для хранения настроек модуля.
Использование директивы VirtualHost также предпочтительнее файла .htaccess (по той же причине). Это отличный вариант для хранения индивидуальных настроек конкретного сайта.
Для редактирования перечисленных конфигурационных файлов можно использовать любой удобный текстовый редактор (в данном руководстве это nano).
Чтобы отредактировать главный конфигурационный файл, используйте команду:
nano /etc/httpd/conf.d/pagespeed.conf
Базовые настройки mod_rewrite
В целом, настройки в pagespeed.conf достаточно неплохо задокументированы. Кроме того, на сайте http://www.modpagespeed.com можно найти отличный список примеров доступных фильтров. Ниже приведено несколько общих настроек модуля, с которыми можно поэкспериментировать, чтобы оптимизировать производительность сайта.
Включение/выключение mod_pagespeed
Для начала попробуйте включить и выключить модуль при помощи директивы ModPagespeed.
ModPagespeed on
или
ModPagespeed off
Уровни Rewrite
Любую конфигурацию можно упростить, указав разные уровни настроек. Стандартный уровень называется CoreFilters. Он содержит набор фильтров, рекомендуемый командой Google. Фильтры – это индивидуальные действия, которые выполняются на конкретный файл. В целом, менять стандартное значение вряд ли придется. Проще использовать эту настройку по умолчанию, при необходимости используя ModPagespeedEnableFilters и ModPagespeedDisableFilters, чтобы включить или отключить фильтры. Стандартная настройка выглядит так:
ModPagespeedRewriteLevel CoreFilters
Чтобы отключить CoreFilters, используйте:
ModPagespeedRewriteLevel PassThrough
Примечание: придется явно разрешить все фильтры, которые включаются с помощью настройки PassThrough.
Стандартный rewrite-уровень CoreFilters по умолчанию содержит множество фильтров, среди которых (на момент написания статьи):
add_head
combine_css
convert_jpeg_to_progressive
convert_meta_tags
extend_cache
flatten_css_imports
inline_css
inline_import_to_link
inline_javascript
rewrite_css
rewrite_images
rewrite_javascript
rewrite_style_attributes_with_url
Конечно, в дальнейшем этот список будет увеличиваться. При использовании уровня CoreFilters вышеперечисленные фильтры активируются автоматически. PassThrough потребует явно включить новые фильтры.
Включение фильтров
Чтобы включить дополнительные фильтры, нужно задать их в директиве ModPagespeedEnableFilters в виде списка, разделенного запятыми.
Примечание: В конфигурационные файлы можно вносить несколько директив ModPagespeedEnableFilters.
Таким образом, включить определенный фильтр для каждого сайта можно в конфигурационном файле виртуального хоста или в файле .htaccess (вместо главного pagespeed.conf).
Приведенный ниже пример демонстрирует включение фильтров Pedantic (которые добавляют атрибуты type в теги стилей и скриптов) и Remove Comment (удаляет комментарии HTML):
ModPagespeedEnableFilters pedantic,remove_comments
Отключение фильтров
Отключать фильтры также можно индивидуально. Список фильтров, которые нужно отключить, имеет такой же вид, что и приведенный ранее список директивы ModPagespeedEnableFilters.
Ниже приведен пример отключения фильтра Convert JPEG to Progressive (обратите внимание: его можно отключить, несмотря на то, что он является частью набора CoreFilters):
ModPagespeedDisableFilters convert_jpeg_to_progressive
Определение переписанных URL-адресов
По умолчанию mod_pagespeed переписывает все, что он может переписать. При помощи следующей директивы можно исключить из перезаписи некоторые файлы (например, библиотеки Javascript):
ModPagespeedDisallow "*/jquery-ui-*.min.js"
Эта опция отключит перезапись файлов, соответствующих заданному шаблону (jquery U в данном случае).
Кроме того, можно полностью отключить перезапись файлов по умолчанию и вручную включить перезапись необходимых файлов. Для этого можно использовать настройки:
ModPagespeedDisallow "*"
ModPagespeedAllow "http://*some-site.com/*/styles/*.css"
ModPagespeedAllow "http://*some-site.com/*.html"
ModPagespeedDisallow "*/notrewritten.html"
Согласно этим настройкам, все файлы сайта some-site, которые заканчиваются на .html, будут переписаны. Директива Disallow значит, что любой URL, который совпадает с заданным в ней шаблоном, не будет переписан, потому что это отменяет предыдущую настройку.
Перезапуск Apache
Не забывайте перезапускать веб-сервер Apache после редактирования pagespeed.conf или VirtualHost, иначе новые настройки не будут активированы. Для этого используйте:
/etc/init.d/httpd restart
Заключение
Данное руководство знакомит с основами работы с модулем mod_pagespeed. Конечно, все существующие общесерверные и индивидуальные опции и директивы модуля невозможно охватить в рамках одной статьи. Кроме того, модуль mod_pagespeed находится на стадии активной разработки. более подробную информацию можно найти на http://www.modpagespeed.com.
Также можно обратиться к официальному сайту mod_pagespeed.