Ускорение сайта с помощью mod_pagespeed от Google
На этот раз я расскажу вам про новую разработку компании Google. А именно, про модуль mod_pagespeed для сервера Apache.
Не так давно, всеми известный Google анонсировал новый модуль для apache, который по их заявлениям увеличивает скорость загрузки сайта на 50%. Честно сказать у себя на блоге я разницу не заметил, так как блог грузится и так очень быстро – «быстрее некуда». Но я не остановился для тестирования mod_pagespeed только на своем блоге.
После установки mod_pagespeed, скорость загрузки его блога увеличилась на 50-60%, и равняется 0.6 – 0.7 сек. Думаю не плохой результат, так как помимо увеличения скорости загрузки, все javascript скрипты и css стили сжимаются до невероятных размеров, и превращаются на выходе в один файл для javascript и css соответственно. Так что смело можно заявлять, что ускорение сайта с помощью нового модуля для apache от google дает неплохие результаты.
Теперь я непосредственно расскажу вам о том, что именно делает данный модуль с сайтом.
Возможности mod_pagespeed:
Добавление задержки при загрузке сайта, на стороне клиента.
Улучшение кэширование страниц.
Удаление ненужных (лишних) пробелов в html коде.
Объединение нескольких css файлов в один.
Объединение нескольких html тегов head в один.
Перемещение css стилей в html тег head.
Удаление ненужных атрибутов в тегах html документа.
Перемещение маленьких css стилей в html документ.
Перемещение больших css стилей из html документа в css файл.
Перемещение маленьких javascript скриптов в html документ.
Перемещение больших javascript скриптов из html документа в javascript файл.
Удаление ненужных кавычек из тегов html документа.
Удаление html комментариев.
Сжатие и компрессия изображений.
Очищение css стилей от комментариев, пробелов и сокращение названий цветов.
Очищение javascript скриптов от комментариев и пробелов.
Добавление тега head в html документ при его отсутствии.
Удаление сценариев из html документа.
Как видите, возможностей у данного модуля много, и все они заменяют работу обычных скриптов для разгрузки системы. Теперь, когда я вас ознакомил со всеми возможностями, мы можем перейти к установке этого модуля на vps, vds под управлением Ubuntu, Debian.
Загружаем программу для доступа к серверу по ssh протоколу. После подключения к серверу, нам нужно прописать команду для скачивания и установки модуля на apache.
Пишем в терминале следующие команды (после каждой команды жмем enter).
Для 32-х битных систем:
wget https://dl-ssl.google.com/dl/linux/direct/mod-pagespeed-beta_current_i386.deb cd ~
Для 64-х битных систем:
wget https://dl-ssl.google.com/dl/linux/direct/mod-pagespeed-beta_current_amd64.deb cd ~
После выполнения этих команд, которые скачивают дистрибутив модуля на сервер, мы переходим к его установке.
Пишем в терминале следующую команду:
sudo dpkg -i mod-pagespeed*.deb
В процессе установки, может понадобиться нажать кнопку «Y» – это согласие на установку пакета и проведение необходимых стандартных настроек.
Теперь, начинается самое интересное. Мы будем настраивать конфигурационный файл модуля так, как захотим.
Конфигурационный файл модуля расположен тут:
/etc/apache2/mods-available/pagespeed.conf
Скачиваем и открываем его обычным блокнотом, чтобы отредактировать параметры. Скачанный файл помещаете в папку, упомянутую чуть выше с помощью менеджера файлов вашего vps хостинга.
Конфигурационный файл:
ModPagespeed on
ModPagespeedDomain http://my_site.com
AddOutputFilterByType MOD_PAGESPEED_OUTPUT_FILTER text/html
ModPagespeedFileCachePath "/var/mod_pagespeed/cache/"
ModPagespeedGeneratedFilePrefix "/var/mod_pagespeed/files/"
ModPagespeedRewriteLevel PassThrough
# ModPagespeedEnableFilters add_head
# ModPagespeedEnableFilters add_instrumentation
ModPagespeedEnableFilters extend_cache
ModPagespeedEnableFilters collapse_whitespace
ModPagespeedEnableFilters combine_css
# ModPagespeedEnableFilters combine_heads
ModPagespeedEnableFilters move_css_to_head
ModPagespeedEnableFilters elide_attributes
ModPagespeedEnableFilters inline_css
ModPagespeedEnableFilters inline_javascript
ModPagespeedEnableFilters outline_css
ModPagespeedEnableFilters outline_javascript
ModPagespeedEnableFilters remove_quotes
ModPagespeedEnableFilters remove_comments
ModPagespeedEnableFilters rewrite_css
ModPagespeedEnableFilters rewrite_images
ModPagespeedEnableFilters insert_img_dimensions
ModPagespeedEnableFilters rewrite_javascript
# ModPagespeedEnableFilters strip_scripts
Как обычно, расскажу «что есть что» и с чем его едят.
ModPagespeed
включение и отключение модуля. Значения on и off соответственно.
ModPagespeedDomain
использование модуля только для определенного сайта.
AddOutputFilterByType
устанавливает обработчик и тип выходных данных.
ModPagespeedFileCachePath
директория хранения файлов кэша.
ModPagespeedRewriteLevel PassThrough
отключает базовый набор фильтров, который по умолчанию использует модуль, и которые безопасны для большинства сайтов.
ModPagespeedGeneratedFilePrefix
директория общей базы кэша и сжатых файлов. Указание требуется, но сама директория не используется, а сделана на будущее.
Теперь идет самое интересное – фильтры. Для их включения используется директива – ModPagespeedEnableFilters, а для выключения директива – ModPagespeedDisableFilters. Фильтры можно подключать и отключать по одному и более.
Примеры:
ModPagespeedEnableFilters filter1
ModPagespeedEnableFilters filter1,filter2
ModPagespeedDisableFilters filter1
ModPagespeedDisableFilters filter1,filter2
add_head
фильтр добавляет тег head в html документ при его отсутствии.
add_instrumentation
фильтр добавляет задержку при загрузке сайта, на стороне клиента.
extend_cache
фильтр улучшает кэширование ресурсов сайта: картинки, контент, сss, js.
collapse_whitespace
фильтр удаляет ненужные пробелы из html кода.
combine_css
фильтр объединяет несколько css файлов в один.
combine_heads
фильтр объединяет нескольких html тегов head в один.
move_css_to_head
фильтр перемещает css стили в html тег head.
elide_attributes
фильтр удаляет ненужные атрибуты в тегах html документа.
inline_css
фильтр перемещает маленькие css стили в html документ.
inline_javascript
фильтр перемещает маленькие javascript скрипты в html документ.
outline_css
фильтр перемещает большие css стили из html документа в css файл.
outline_javascript
фильтр перемещает большие javascript скрипты из html документа в javascript файл.
remove_quotes
фильтр удаляет ненужные кавычки из тегов html документа.
remove_comments
фильтр удаляет html комментарии.
rewrite_css
фильтр очищает css стили от комментариев, пробелов и сокращает название цветов.
rewrite_images
фильтр сжимает изображения. Использует для этого компрессию с помощью библиотек libjpeg, libpng и сжатие с помощью OpenCV.
insert_img_dimensions
фильтр добавляет атрибуты высоты и ширины для изображений.
rewrite_javascript
фильтр очищает javascript скрипты от комментариев и пробелов.
strip_scripts
экспериментальный фильтр который удаляет сценарии из html документа. Пока не понятно для чего его использовать, но функциональность он нарушает это точно.
Вот в принципе и все фильтры, которые доступны на данный момент. С остальными настройками вы можете ознакомиться на сайте google. Кстати говоря, пока доступна, только, бета версия mod_pagespeed и только на apache 2, но могу с уверенностью сказать, что глюков я пока не замечал.
После редактирования конфигурационного файла, нам нужно перезагрузить apache.
Пишем в терминале следующую команду:
/etc/init.d/apache2 restart
На этом настройка и установка окончательно закончена. А вы себе поставили такой модуль?