Ускоряемся с помощью mod_pagespeed

Ускорение работы Web-сайта с помощью модуля от компании Google

Разработанный компанией Google модуль mod_pagespeed для HTTP-серверов Apache ускоряет загрузку Web-страниц. В этом модуле, практически не требующем настройки, реализованы и автоматизированы все лучшие решения, обеспечивающие быстродействие работы Web-сайтов. Модуль mod_pagespeed позволяет быстро и легко ускорить работу Web-сайтов тем, кто занимается Web-хостингом.

Майкл Абернети, автор

Майкл Абернети (Michael Abernethy) в настоящее время работает руководителем группы тестировщиков в IBM WebSphere System Management, расположенной в Austin, TX. До этого он работал разработчиком Swing UI.



10.06.2013

Введение

Необходимые требования

Для использования модуля mod_pagespeed ваш компьютер должен работать под управлением 32- или 64-разрядной операционной системы Linux; на нем должен быть установлен Web-сервер Apache версии 2.2 или выше с модулем mod_deflate.

В настоящее время модуль mod_pagespeed не поддерживается в операционной системе Windows и более старых версиях Apache (судя по документации и ответам на часто задаваемые вопросы, я бы также не рассчитывал на появление такой поддержки в ближайшем будущем).

Apache-модуль mod_pagespeed компании Google разработан в виде "drop-in" модуля, который можно "положить" в установочную директорию Web-сервера и сразу получить увеличение скорости обработки Web-страниц. Если конфигурация вашего Web-сервера не настроена на оптимальную производительность или если вы точно не знаете, как можно повысить ее, то mod_pagespeed может оказаться подходящим решением. Например, если вы ведете блог под управлением Wordpress, то использование mod_pagespeed обеспечит огромный выигрыш в скорости.

Модуль mod_pagespeed сочетает в себе лучшие решения по оптимизации загрузки Web-страниц и автоматически выполняет все необходимые действия.

Определяем понятие скорости

Вне зависимости от скорости Интернет-подключения нам всегда хочется, чтобы Web-страницы загружались быстрее. Владельцы Web-серверов, отправляющих нам содержимое Web-страниц, также хотят делать это быстрее по двум причинам: компании с медленными серверами теряют клиентов, а компании с быстрыми серверами, обеспечивающими быструю загрузку отдельных страниц, могут использовать освобожденные ресурсы для обслуживания дополнительных клиентов. Даже если вы заходите на страницу какой-то компании всего лишь раз в день, другие клиенты могут обращаться к этой же странице 100000 раз в день. Для таких компаний даже небольшая задержка при загрузке страницы является очень существенной.

В этой статье мы будем рассматривать понятие "скорость" с точки зрения пользователя и определим его как время загрузки Web-страницы. Быстрой считается та Web-страница, которая быстро загружается (например, страница www.google.com, время загрузки которой очень мало). И наоборот, медленной Web-страницей будет являться страница, расположенная, например, на старом компьютере Pentium II с процессором 600 МГц и содержащая 40 больших изображений; время загрузки такой страницы будет очень большим. Кроме того, Web-страница может быть очень быстрой, если ее посещают всего несколько человек в день, но если количество пользователей увеличится до нескольких тысяч за 10 минут, то время загрузки может оказаться чрезвычайно большим. Таким образом, понятие "скорость" определяется как время, необходимое для перемещения из точки А в точку Б, где точкой А является момент нажатия клавиши Enter после ввода адреса страницы в адресной строке, а точкой Б – полностью загруженная страница в Web-браузере клиента.

С точки зрения Web-сервера самым лучшим способом увеличения скорости (без замены аппаратной части) является более быстрая отправка более мелких объемов данных. Если подойти к вопросу более детально, то это означает, что предпочтительнее уменьшать задержку (т. е. время отклика) компьютера и объем передаваемых данных (т. е. количество передаваемых физических килобайтов). Таким образом, для "ускорения" Web-сайта как с точки зрения Web-сервера, так и с точки зрения пользователя необходимо уменьшить и задержку сервера, и размер передаваемых данных.

Как можно увеличить скорость

Все возможные способы ускорения Web-сайтов разделяются на 5 категорий: максимальное использование кэша, минимизация количества обращений к серверу, минимизация объема служебных данных в запросе, минимизация размера передаваемых данных и оптимизация вывода содержимого Web-браузером. Отметим, что каждая из этих категорий содержит комплексные меры, такие как "максимизация" или "минимизация", и не предполагает простых решений (например, "включить" или "отключить" определенную опцию или параметр). Теперь перейдем к рассмотрению каждой из этих категорий и выясним, что предлагается сделать в каждом случае.

Максимальное использование кэша

Каждый Web-браузер может помещать загруженные файлы в локальный кэш, и, вместо того чтобы повторно загружать файлы с сервера, загружать их локальные копии. Конечно, это не совсем актуально для динамических Web-страниц (например, для блогов), но что насчет изображений, CSS- и JavaScript-файлов, которые загружаются вместе с Web-страницами? Эти файлы изменяются очень редко либо не изменяются вообще. Нет никакой необходимости каждый раз загружать с сервера один и тот же CSS-файл, особенно если этот единственный файл используется для всего Web-сайта. Если каждая загружаемая Web-страница использует один и тот же CSS-файл, то можно загружать его копию из локального хранилища, а не с сервера, поскольку эти копии одинаковые.

Фактически Web-браузеры получают команды на кэширование от сервера. Web-сервер может сообщать о том, как долго загружаемые с сервера элементы данных должны считаться достоверными. Сервер может сопровождать такими командами каждый файл. Например, сервер может указать Web-браузеру поместить в кэш файл JS, CSS или JPG, но не HTML- или TXT-файл. Более того, сервер может сказать Web-браузеру, например, о том, что "файлы CSS и JPG будут актуальными в течение одного года". Web-браузер получает это сообщение и интерпретирует его следующим образом: "был получен JPG-файл, который не изменится в течение года, так что с этого момента при обращении к данному файлу с любой страницы сервера следует использовать его локальную копию".

Минимизация количества обращений к серверу

При передаче сервером в Web-браузер любых файлов для каждого файла устанавливается отдельное HTTP-соединение, что приводит к накладным расходам. Другими словами, каждый файл требует наличия канала взаимодействия между сервером и Web-браузером. На самых популярных Web-сайтах файлы передаются в огромных количествах, и каждый раз сервер должен выполнять определенные служебные процедуры, затрачивая на это время. Таким образом, уменьшение количества обращений к серверу снижает количество времени, которое сервер должен тратить на их обслуживание.

Основной способ реализации этой идеи очевиден: Web-страница должна содержать как можно меньше файлов, которые должны передаваться клиенту. Например, если ваша страница содержит 10 изображений, то для ее загрузки может потребоваться создать 10 HTTP-соединений. Однако можно уменьшить необходимое количество соединений, скомпоновав ресурсы в минимальное количество файлов – например, поместить в один файл все модули jQuery или объединить все маленькие изображения в одно большое и показывать его нужные фрагменты с помощью CSS.

Минимизация объема служебных данных в запросе

При загрузке каждой Web-страницы браузер получает от сервера определенную информацию, включая cookie-файлы и вызовы POST и GET. Естественно, на это затрачивается определенное время, поскольку информация cookie-файлов должна передаваться на сервер при каждой загрузке страницы клиентом. Некоторые Web-сайты хранят в cookie-файлах тонны информации, и чем ее больше, тем больше времени необходимо затрачивать на ее передачу.

Существует более предпочтительный вариант, при котором cookie-файл содержит минимальное количество данных (например, только идентификатор пользователя) и служит ключом для поиска необходимой информации в базе данных. Такой подход резко снижает время передачи необходимой информации на сервер.

Минимизация размера передаваемых данных

Файл размером в 20 КБ всегда будет передаваться быстрее, чем файл размером в 200 КБб. Эта составляющая оптимизации быстродействия включает в себя все известные методы – например, использование файлов GIF вместо файлов JPG, минимизация файлов JavaScript или отправка миниатюрных эскизов изображений вместо полных изображений всегда, когда это возможно.

Оптимизация вывода содержимого Web-браузером

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

Однако довольно рассуждений. Приступаем к загрузке и работе с mod_pagespeed. В конце концов нам обещают, что достаточно поместить этот модуль в директорию установки Apache, и нам не придется беспокоиться обо всех деталях настройки быстродействия.

Загрузка, инсталляция и настройка модуля mod_pagespeed

Загрузите пакет (см. ссылку в разделе Ресурсы) и запустите соответствующую команду Linux для его инсталляции на компьютер.

После инсталляции модуль mod_pagespeed еще никак не связан с сервером Apache. Давайте сделаем это. После установки mod_pagespeed я рекомендую для простоты скопировать файл pagespeed.conf из его установочной директории в директорию Apache conf. Также скопируйте файл mod_pagespeed.so в директорию Apache modules. Наконец, создайте директории, в которых будут храниться кэшированные файлы и файлы, сгенерированные модулем (я назвал эти директории cache и files соответственно).

Далее необходимо указать Apache использовать модуль mod_pagespeed, для чего нужно отредактировать файл http.conf. Добавьте в конце этого файла следующую строку:

Листинг 1. Редактирование конфигурационного файла Apache http.conf
Include "{your-path-to-this-file}/pagespeed.conf"

Далее необходимо отредактировать файл pagespeed.conf и указать правильный путь к нашим файлам и директориям:

Редактирование файла pagespeed.conf
# at line 1 of the file
LoadModule pagespeed_module {your-path-to-this-file}/mod_pagespeed.so

# down at line 25-26 in the file
ModPagespeedFileCachePath "{your-'cache'-file-path-here}"
ModPagespeedGeneratedFilePrefix "{your-'files'-file-path-here}"

Наконец, можно запускать сервер Apache.


Проверка успешной инсталляции mod_pagespeed

Чтобы убедиться в том, что модуль mod_pagespeed успешно установлен, нужно проверить несколько моментов. Во-первых, сервер Apache должен успешно запуститься (в противном случае вы неверно выполнили процедуру install/configure для mod_pagespeed). Во-вторых, нужно проверить директорию "cache" и убедиться, что mod_pagespeed успешно записывает в нее данные.

Теперь откройте какую-нибудь страницу вашего Web-сайта (она должна содержать файлы JS или CSS). После этого загляните в директорию "cache". В ней вы должны увидеть упакованные файлы или архивы GZip, которые являются сжатыми копиями файлов JS или CSS (т. е. тех файлов, которые могут быть сжаты). Это будет являться первым признаком успешной инсталляции и настройки модуля mod_pagespeed.

Последняя проверка заключается в просмотре заголовка ответа, полученного от сервера. Сделать это можно с помощью таких инструментов, как Firebug или собственная утилита Google Page Speed, либо написав свой PHP-сценарий. Когда будете просматривать заголовок ответа, ищите в нем ссылку на тег "Modpagespeed", поскольку инструмент Google помечает ответы.

Поздравляю! Успешная проверка директории "cache" и заголовка ответа означает, что вы правильно проинсталлировали и настроили модуль mod_pagespeed.


Тестирование mod_pagespeed

Если вы хотите протестировать модуль mod_pagespeed, прежде чем запустить его в работу, вы можете выполнить все вышеописанные шаги и отключить модуль в файле pagespeed.conf до тех пор, пока он не потребуется (удалять настройки, сделанные в файле http.conf сервера Apache, не требуется). Модуль mod_pagespeed можно включать и отключать в файле pagespeed.conf с помощью параметра ModPagespeed on в десятой строке. Чтобы эти изменения вступили в силу, необходимо перезапустить Apache.


Заключение

Большинство администраторов Web-сайтов понимают всю важность быстрой загрузки страниц, но мало кто из них является серьезным фанатом Linux и отслеживает статистику и максимальное время загрузки. Для большинства Web-администраторов идеально подходит такой простой инструмент, как mod_pagespeed – простая установка, практически не требующая настройки, и существенное ускорение загрузки Web-страниц для пользователей.

Ресурсы

Научиться

Получить продукты и технологии

  • Загрузите модуль mod_pagespeed (EN) от компании Google.

Обсудить

Комментарии

developerWorks: Войти

Обязательные поля отмечены звездочкой (*).


Нужен IBM ID?
Забыли Ваш IBM ID?


Забыли Ваш пароль?
Изменить пароль

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Профиль создается, когда вы первый раз заходите в developerWorks. Информация в вашем профиле (имя, страна / регион, название компании) отображается для всех пользователей и будет сопровождать любой опубликованный вами контент пока вы специально не укажите скрыть название вашей компании. Вы можете обновить ваш IBM аккаунт в любое время.

Вся введенная информация защищена.

Выберите имя, которое будет отображаться на экране



При первом входе в developerWorks для Вас будет создан профиль и Вам нужно будет выбрать Отображаемое имя. Оно будет выводиться рядом с контентом, опубликованным Вами в developerWorks.

Отображаемое имя должно иметь длину от 3 символов до 31 символа. Ваше Имя в системе должно быть уникальным. В качестве имени по соображениям приватности нельзя использовать контактный e-mail.

Обязательные поля отмечены звездочкой (*).

(Отображаемое имя должно иметь длину от 3 символов до 31 символа.)

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Вся введенная информация защищена.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=40
Zone=Linux
ArticleID=933569
ArticleTitle=Ускоряемся с помощью mod_pagespeed
publish-date=06102013