Оптимизация WordPress
Здравствуйте, уважаемые посетители сайта okITgo.ru! Решил поделиться своими небольшими знаниями того, как можно оптимизировать WrodPress и какие меры я предпринял, в частности, на своем блоге для ускорения загрузки страниц. Читателям, использующим WP наверняка все это известно, но тем не менее, хочу рассказать, что я сделал для достижения этой цели.
Настройка Мониторинга Процесса Генерации Страницы Сайта
Напомню, что движок WordPress, как собственно и практически все остальные cms (Joomla!, DLE и другие) хранят часть информации в базе данных MySQL и при генерации страницы происходит ряд запросов к БД для извлечения этой информации (название сайта, различные URL-адреса, текст статей и т.п.). Естественно, на осуществление запросов к базе данных тратится время. Чтобы посмотреть, сколько sql-запросов делается при генерации определенной страницы и какое время занимают эти запросы, можно воспользоваться встроенными функциями WordPress:
- get_num_queries(); – возвращает количество запросов к бд при генерации страницы
- timer_stop( $display = 0, $precision = 3 ); – возвращает ($display = 0) / выводит ($display = 1) время осуществления запросов к бд при генерации страницы с точностью $precision знаков после запятой
Таким образом, если в шаблоне FOOTER, например в самом низу, прописать код:
<?php if (current_user_can(‘level_10′)) { echo ‘<p>’.get_num_queries() . ‘ queries in ‘ . timer_stop(0,3) . ‘ seconds</p>'; } ?> |
то при открытии какой-либо страницы (при входе под админом, что проверяет функция “current_user_can”, 10-й уровень привилегий как раз админский) внизу будет добавляться параграф с информацией о количестве запросов к бд и за какое время эти запросы были сделаны при генерации этой страницы. Конечно функцию current_user_can можно убрать, но тогда данная информация будет выводиться для любого, открывшего страницу вашего сайта.
Кстати, за одним можете также добавить вывод потребления памяти, дописав следующий код:
if ( function_exists(‘memory_get_usage’) ) echo round(memory_get_usage()/1024/1024, 2).’mb'; |
Т.е. в итоге код мониторинга будет такой (я еще немного отформатировал вывод, чтобы информация выводилась в виде строки 10 / 0.738 / 25.89mb, здесь 10 – количество запросов к бд, 0.738 – количество секунд осуществления запросов, 25.89mb – потребление памяти):
<?php if (current_user_can(‘level_10′)) { echo “<p>”; printf((‘%d / %s’), get_num_queries(), timer_stop(0, 3)); if ( function_exists(‘memory_get_usage’) ) echo ‘ / ‘. round(memory_get_usage()/1024/1024, 2) . ‘mb ‘; echo “</p>”; } ?> |
Превращаем Генерируемые Сведения о Сайте в Статические
Итак, мониторинг настроили. Теперь откроем какую-нибудь страницу блога и запомним (или запишем, чтобы не забыть) значения количества запросов к БД и время, чтобы ощутить эффект от проделывания описанных далее операций.
Теперь убраем лишние запросы к базе данных MySQL, которые извлекают статичную для вашего блога информацию. Как правило, такие запросы присутствуют в шаблонах HEADER и FOOTER. Для этого, открываем шаблон HEADER (лежит в поддиректории движка “wp-content\themes\<ТЕМА>\”, где <ТЕМА> означает название папки с текущей темой) и смотрим, есть ли в нем запросы следующего типа (далее идет таблица, слева указан исходный код, в середине описание – где нет – значит точно не знаю, справа – статичный кусок HTML кода, на который данный фрагмент можно заменить, в качестве примера указано значение для моего блога):
Исходный код (с запросом к MySQL) | Статичный html код, на который можно заменить | Пример |
---|---|---|
<?php bloginfo(); ?> | НАЗВАНИЕ БЛОГА | okITgo.ru |
<?php bloginfo(‘name’); ?> | НАЗВАНИЕ БЛОГА | okITgo.ru |
<?php bloginfo(‘description’); ?> | ОПИСАНИЕ БЛОГА | Информационные технологии, интернет, веб программирование, IT, Hi-Tech, … |
<?php bloginfo(‘admin_email’); ?> | EMAIL АДМИНИСТРАТОРА | admin@okITgo.ru |
<?php bloginfo (‘url’); ?> | АДРЕС САЙТА | http://okITgo.ru |
<?php bloginfo (‘wpurl’); ?> | АДРЕС WORDPRESS-БЛОГА | http://okITgo.ru |
<?php bloginfo (‘stylesheet_ directory’); ?> | ДИРЕКТОРИЯ СО СТИЛЯМИ | http://okITgo.ru/wp-content/themes/<ТЕМА> |
<?php bloginfo (‘stylesheet_ url’); ?> | ПУТЬ К ТАБЛИЦЕ СТИЛЕЙ (URL) | http://okITgo.ru/wp-content/themes/<ТЕМА>/style.css |
<?php bloginfo (‘template_ directory’); ?> | ДИРЕКТОРИЯ СО ШАБЛОНАМИ | http://okITgo.ru/wp-content/themes/<ТЕМА> |
<?php bloginfo (‘template_ url’); ?> | ПУТЬ К ШАБЛОНАМ | http://okITgo.ru/wp-content/themes/<ТЕМА> |
<?php bloginfo (‘atom_url’); ?> | http://okITgo.ru/feed/atom | |
<?php bloginfo (‘rss2_url’); ?> | RSS ЛЕНТА | http://okITgo.ru/feed |
<?php bloginfo (‘rss_url’); ?> | http://okITgo.ru/feed/rss | |
<?php bloginfo (‘pingback_ url’); ?> | http://okITgo.ru/xmlrpc.php | |
<?php bloginfo(‘rdf_url’); ?> | http://okITgo.ru/feed/rdf | |
<?php bloginfo (‘comments_ atom_url’); ?> | http://okITgo.ru/comments/feed/atom | |
<?php bloginfo (‘comments_ rss2_url’); ?> | RSS ЛЕНТА КОММЕНТАРИЕВ | http://okITgo.ru/comments/feed |
<?php bloginfo(‘charset’); ?> | КОДИРОВКА САЙТА | UTF-8 |
<?php bloginfo(‘html_type’); ?> | ТИП HTML | text/html |
<?php bloginfo(‘language’); ?> | ЯЗЫК | okITgo.ru |
<?php bloginfo (‘text_ direction’); ?> | НАПРАВЛЕНИЕ ТЕКСТА | ltr |
<?php bloginfo(‘version’); ?> | ВЕРСИЯ ДВИЖКА | 3.2.1 |
Если у Вас включен плагин “Exec-PHP” (в будущем напишу отдельную статью про этот полезный плагин, позволяющий добавлять php-код в статьи, страницы и текстовые виджеты), то чтобы выяснить статические значения для вашего сайта, можете создать тестовую статью следующего содержания: просто скопируйте код в буфер обмена и вставьте его в html-редакторе при создании записи в админке.
После опубликования, просмотрите данную статью – будут указаны значения для вашего сайта. Также эти значения можно посмотреть и в исходном коде страницы, но для этого надо иметь представление об устройстве страницы, как правило, у практически любой страницы WordPress сверху идет HEADER, снизу FOOTER, так что открываем исходный код, сопоставляем шаблоны с исходным кодом и находим статические значения, на которые меняем генерируемые участки в шаблонах.
Далее по аналогии меняем генерируемые участки на статичные в шаблоне FOOTER. В принципе с этим этапом все, главное имейте в виду, если теперь Вы поменяете одну из настроек сайта в админке, например, название сайта, то это не отразится на страницах блога – надо будет менять статичное значение в шаблонах. Но подобные изменения для устоявшегося сайта довольно редки.
Проверка Результата Оптимизации WordPress
Теперь проверяем результат: открываем страницу, для которой записали количество запросов к бд и время, которое на эти запросы ушло, и сравниваем новые значения с записанными до проделывания оптимизации: количество запросов должно уменьшиться, как и время.
Наконец, отмечу, что существует еще множество методов, как можно оптимизировать WordPress, например, снижение потребления памяти, настройка кэширования и т.п., но об этом я расскажу в следующий раз. Спасибо за внимание! До новых встреч на страницах сайта okITgo.ru.
Все это не работает с bloginfo! Реально покажи скрин до и после. Там занимаюсь оптимизацией и после проделываний всего, что написано выше – не работает.
Так это для wordpress, а bloginfo это другой движок какой-то?
Очень интересная и полезная информация.
Вот только нельзя просто копировать и вставлять в Футер.php – проблемы с кодировкой. А если набрать ручками в Нотпаде++ как надо, то очень хорошо получается.
Спасибо!
Полезная инфа, а я как раз сейчас занимаюсь ускорением блога и обязательно воспользуюсь вашими советами. Спасибо!