Как ускорить загрузку сайта на wordpress: Часть 2 — запросы к базе данных

Автор:
(Людмила Лунева)

Веб-дизайнер и разработчик сайтов на wordpress

Продолжение.
Начало поста Ускоряем сайт на WordPress читайте на предыдущей странице.

3. Большое количество запросов к базе данных:

Современные сайты работают на CMS – системах управления контентом.

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

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

Как узнать, сколько запросов к базе данных происходит при загрузке страницы вашего сайта?

медленная загрузка страниц - что делать?
Вставьте в файл footer.php этот код:

<?php
$user = wp_get_current_user();
if ( $user->id == 1 ) {
echo " MySQL: " . get_num_queries() . " запросов за "; timer_stop(1);
echo " секунд. Память: ".round(memory_get_usage()/1024/1024, 2)." MB";
var_dump($GLOBALS['wpdb']->queries);
}
?>

Перезагрузите страницу и посмотрите, сколько запросов она покажет.

Как определить, что запросов много?

Тема Twentyeleven, которая по умолчанию устанавливается на WordPress дает 12 запросов на Главной и 16 на странице записи (при полном отсутствии плагинов).

К таким показателям нужно стремиться.

Понятно, что это самая простая тема, а чем она будет сложнее и функциональнее, тем запросов будет больше. Современные журнальные темы (созданные по типу новостных шаблонов) могут давать от 50 до 100 и больше запросов к базе данных.

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

Что же делать? Хочется иметь красивый и функциональный шаблон и при этом, чтобы сайт работал быстро.

Выход есть - нужно оптимизировать вашу тему.

Сейчас мы сделаем это вместе с вами ↓

Открыть ↓

Желательно, также, просмотреть все остальные файлы темы - в них тоже могут встречаться wordpress-теги, которые можно заменить html-кодом или текстом.

Продолжение поста Ускоряем сайт на WordPress читайте дальше.

Хотите получать сообщения о скидочных акциях,
новых постах и темах для wordpress?
  1. Спасибо, очень полезный материал.

  2. Ксана, а для ваших премиум тем (у меня стоит Сабрина) эти проблемы актуальны?? или уже все максимально оптимизировано?

    • Оптимизировано, насколько это оказалось возможным.

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

      Поэтому, часть работ по оптимизации шаблона владелец сайта должен выполнить самостоятельно.

      • я не нашел в шаблоне функцию для вывода версии wordpress, но в коде вывод такой информации присутствовал....
        тогда пришлось проверить файлы самой cms,как итог в файле /includes/general-template.php строка 2189 и 2192, вывод версии cms, удалил оттуда две строчки,пропал вывод версии в коде странички...
        вопрос, я ниче лишнего не удалил???

        • Если на сайте ничего не поломалось, значит вы сделали все правильно :)
          Хотя это слишком радикальный способ.

  3. Хороший цикл статей по оптимизации. Довольно исчерпывающий. Я так понимаю - это синтез материалов из сети плюс свой собственный опыт?

    Я, что называется по горячим следам, произвел оптимизацию своего блога. Приведу отчет о результатах - думаю, что многим это будет интересно. Тем более, что оптимизировал блог, на котором стоит Ксанина тема. :)

    Исходные данные. Стоит мультисайтовый WP 3.3. Хостинг – VPS, процессор – 1100 МГц, дисковая система – 10Гб, оперативная память – 600Мб. Сервер – был apache+lenny, но версий уже не помню.

    В сети 4 блога – 1 основной, приаттаченный к основному домену, и три – на поддоменах третьего уровня. Основной блог содержит свыше 200 записей и 4200 комментариев. Информация на блоге – текстовая, графика практически отсутствует. Остальные блоги в сети недавно, поэтому содержат небольшое количество записей.

    Поставил на основной блог после доработки под свои нужды Ксанину тему Blue Dream. Блог и до этого не сказать бы, что летал, а после смены темы – стал откровенно тормозить. Загрузка отдельных страниц занимала по 40-50 с., а то и вообще отрубалась по тайм-ауту. Не помогал и кеширующий плагин – W3 Total Cash – уменьшалось время загрузки только индексной страницы блога.

    Естественно, в такой ситуации нужно было что-то делать.

    Первым делом я напряг хостера. Хостер поставил nginx, однако это не улучшило ситуацию.

    Я стал анализировать, какие компоненты вызывают наибольшую задержку. Для этого включил плагин wp-tuner.

    Нужно отметить, что несмотря на откровенную полезность данного плагина автор не обновляет его с 2009 года. Поэтому, если прописать в wp-config инструкции, которые рекомендует руководство по использованию данного плагина, то блог отрубается. Я оставил плагин включенным, но wp-config по требованию инструкции не менял.

    Плагин показал, что наибольшее время отбирала обработка загрузки постов – post_selection и выполнение запросов, обращающихся к таблицам wp-posts и wp-comments.

    Я решил провести небольшой эксперимент – подключил эту же тему к другим блогам сети. Время загрузки страниц на других блогах составляло в районе 2с.

    После этого я провел второй эксперимент – отключил все плагины. Это тоже снизило скорость загрузки страниц до приемлемых нескольких секунд.

    Мы со службой поддержки хостера пришли к выводу, что на загрузку страниц влияли как обращения к базе данных, так и скорость обработки скриптов. Количество обращений к базе данных на главной странице с включенными плагинами составляло где-то 120. После отключения – в районе 90.

    Я занялся оптимизацией БД, хостер – ускорением обработки скриптов.
    Хостер поставил ускоритель eAccellerator – примочку, кеширующую php-скрипты на сервере.

    Я тем временем, оптимизировал таблицы баз данных. Оптимизацию можно провести непосредственно из phpMyAdmin, но если кто не особо понимает в базах данных, то в принципе можно воспользоваться и специальным плагином – wp- DBManager.

    Также я уменьшил количество обращений к базе данных за счет редактирования шаблонов темы согласно приведенным в статье Ксаны советам (в основном это header.php)

    Затем я стал по одному включать плагины. А их у меня было в районе 50 штук. Причем, как я не старался найти и отключить ненужные, все равно меньше 38 включенных плагинов оставить не получалось – все были нужные.

    Мои наблюдения при последовательном подключении плагинов показали, что подключение большинства плагинов на скорость загрузки страниц блога влияли несущественно либо вообще не влияли. Я подключил около 30 плагинов, а скорость загрузки отдельных страниц возросла в среднем с 1,7 сек до 2,2 сек.

    Затем пошли более «тяжеловесные» плагины, которые задействовали обращения к базе данных, и в конечном итоге скорость загрузки страниц в среднем остановилась на отметке где-то в 6-7 сек, что в целом я считаю вполне приемлемым.

    Надеюсь этот опыт может оказаться кому-то полезным.

    • Я так понимаю - это синтез материалов из сети плюс свой собственный опыт?

      Точнее, материалы из сети, проверенные на собственном опыте.

      Поставил на основной блог после доработки под свои нужды Ксанину тему Blue Dream.
      Количество обращений к базе данных на главной странице с включенными плагинами составляло где-то 120. После отключения – в районе 90.

      Как это вы так умудрились переделать тему?
      Исходная версия на Главной дает 50 queries.

      Надеюсь этот опыт может оказаться кому-то полезным.

      Конечно же ваш опыт будет полезен другим.
      Спасибо, что поделились.

      • Как это вы так умудрились переделать тему?
        Исходная версия на Главной дает 50 queries

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

        Но тем не менее результаты на текущий момент такие: при загрузке индексной страницы - 132 запроса, 47,6 Мб память, 3,0 сек.

        Для сравнения стандартная тема twentyeleven показывает на той же самой странице 72 запроса при 44,7 Мб, 2,7 сек.

        Немного статистики из wp-tuner.
        Сама тема дает 57 запросов.
        25 запросов дает плагин adsense-integrator - хм... надо будет подумать над этим.
        18 запросов - Ядро (другое) - что значит это "другое", пока не разобрался.
        Еще 7 запросов - виджеты.
        Остальные запросы более менее равномерно распределяются между несколькими плагинами.

  4. Очень полезный материал. Оптимизация при большом количестве плагинов просто необходима.

  5. Спасибо за код вывода кол-ва запросов и время запроса!

  6. Какая вы умная женщина :)

  7. Здравствуйте. Не могу найти где установлен код для вывода версии wordpress. Шаблон striking. Это необходимо сделать или не столь важно?

  8. Я вот не пойму как же вы говорите прописывать title и description, они не могут быть статическими, так как они будут одинаковы на всех страницах сайта или я чтото недопонял ?

    Спасибо за статью, кое что почерпнул для себя, но всеже проблема остается и пока не могу понять в чем, header переоптимизировал по вашему описанию кроме title и description =) страницы сайта продолжают грузиться по 5-8 секунд Если можете посмотрите сайт _evroluxe.com_

    • страницы сайта продолжают грузиться по 5-8 секунд

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

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

      Смените шаблон :).

  9. Александра в striking его уже убрали разрабы, у меня тоже на одном из клиентских сайтов установлен striking

Внимание: все отзывы проходят модерацию.

Топ комментаторов
АватарАватарАватарАватарАватарАватарАватарАватарАватарАватарАватарАватарАватарАватарАватарАватарАватарАватарАватарАватар
Самые комментируемые записи
Самые читаемые записи

Для того чтобы снять блок и увидеть скрытый контент или ссылку на закачку, подпишитесь на обновления блога.

В каждом письме публикуется код разблокировки.

Пользуйтесь кодом только из последних, пришедших вам на Email, писем. Закрыть »

Постов 195
Отзывов 4349