Оптимизация(настройка) WordPress или снимаем нагрузку на хостинг.

С каждым выходом новой версии WordPress она всё больше создаёт нагрузку на хостинг. Из-за чего можно получить претензию от хостинга или постоянно наблюдать “тормоза” в работе сайта. Поэтому уже нельзя сказать, что бложный движок WordPress лёгкий, маленький и пушистый.
В этой статье, я хочу разобрать, что же создаёт нагрузку на сервер, и что можно сделать, что бы снизить её.

Что создаёт нагрузку.

1. Запросы к Базе Данных(БД).
Как всем известно, WordPress для хранения информации(посты-сообщения, комментария и т.п.) использует БД MySQL. Что бы получить эту информацию нужно обратится(сделать запрос) к этой БД. Обращения к БД могут поступать от самого ядра движка, от плагинов и от шаблонов. Соответственно чем больше запросов к БД тем больше нагрузка на процессор сервера. Так же зависит размер БД, чем больше, тем будет труднее выбрать информацию из БД.

2. Генерация информации.
Это явление встречается в шаблонах. Сразу приведу пример: допустим, нужно, в шаблоне, вывести какой сегодня год. Это можно сделать через PHP функцию, а можно просто написать сам год числом. Если делать через PHP функцию, то скрипту придётся обратиться лишний раз к PHP, что бы выполнить эту функцию, а потом вставить результат, что не есть хорошо. Ещё пример: допустим, я знаю, что я не буду использовать Виджеты, но в хороших шаблонах будут присутствовать разные условия, которые проверяют, активирован ли Виджет, это тоже лишние действия.
Конечно это мизер, по сравнению с 1 пунктом, но всё же возьмём в счёт.

3. Есть ещё неизбежные факторы, такие как сама организация движка(Производительность WordPress, Анализ потребления памяти WordPress, Аппетиты WP2.7). Плагины, Шаблоны, которые действительно нужны, но написанные без подхода оптимизации. Размер БД.

Что можно сделать.

1.Первый этап. Руки
Для начала нужно удалить все неиспользуемые плагины и плагины, которые не особо нужны. Это значительно сократит количество запросов к БД.
Кстати, что бы узнать сколько сейчас делается запросов, какое время на это тратится и сколько потребляется памяти, нужно в шаблоне(для удобства в 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);
	}
?>

Или можно воспользоваться плагином для анализа WP Tuner.
Далее нужно почистить шаблон от ненужной генерированной информации(о которой я говорил выше), заменить её на обычную текстовую, причём это уменьшит и количество запросов к БД. Почитать тут Оптимизация WordPress шаблонов, Практические советы по оптимизации блога на WordPress.

Можно снять потребление ресурсов за счёт языкового файла Снижение потребления ресурсов WordPress.

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

2.Второй этап – Кэширование.
Если первый этап не дал ожидаемых результатов, то их можно добиться с помощью Кэширования.
Как мы выяснили, самую большую нагрузку несут запросы к БД. Но из БД мы получаем обычно одну и ту же информацию(тоже сообщение, новость, комментарий), так зачем нам каждый раз лезть в БД, раз это затрачивает много ресурсов? Кэширование решило эту проблему. Теперь при первом заходе на сайт, происходят запросы к БД, вам выдаётся страница, а в то же время эта страница сохраняется в отдельную папку на сервере. И при последующем заходе на сайт, страница будет грузиться оттуда, не делая запросы к БД.
Но тут есть свои минусы:
1. Некоторые плагины нуждаются в постоянном обращении к БД для вывода последней информации.
2. Место для Кэша страниц.

Плагины для Кэширования:

1. WP-Cache.
2. WP Super Cache — Этот плагин включает в себя плагин WP-Cache плюс полезные доработки, почитать о них можно вот тут.
3. Hyper Cache – Про настройку и отличие от WP Super Cache можно почитать тут.
4. WP File Cache и о нём. Этот плагин Кеширует только запросы к БД, но не все. Он не создаёт уже готовые страницы для запуска, как предыдущие плагины, а складывает результаты запросов в файлы и при ледующем заходе на страницу, он читает информацию оттуда.

Я не стал пока экспериментировать с установкой этих плагинов. Поставил WP File Cache, запросов сократилось в трое, на скорость вроде не повлияло, а на нагрузку – время покажет.

Авто блог Automotoboom.ru, терминалы платежей, кондиционеры daikin


Интересные записи

5 комментария для “Оптимизация(настройка) WordPress или снимаем нагрузку на хостинг.

  • 1
    Денис Викторович
    апреля 28, 2011 12:37

    Не знаю, у меня несколько сайтов на движке WordPress, размещенные на TAG.Hosting и пока не было никаких жалоб со стороны хостера, да и работает все нормально, стабильно

  • 2
    SEO-007
    ноября 25, 2009 01:48

    Я оптимизирую wordpress слежующим образом

    Основная внутренняя оптимизация:
    Урлы страниц (permalinks)
    Оптимизация тайтла под СЕ
    Оптимизация дескрипшена
    Оптимизация текста в теге more
    Оптимизация картинок и изображений в блоге

    Оптимизация шаблона (темплейта):
    Панировка
    Рубрики (категории)
    Чистка кода
    Усовершенствование скорости
    Реорганизация сайдбара

  • 3
    Зайва Игорь Леонидович
    мая 18, 2009 04:08

    Что-то код не отобразился, блин.

  • 4
    Зайва Игорь Леонидович
    мая 18, 2009 04:07

    Да… капец примерчик… :) Поставил

    и был в шоке: запросов в БД было 80, а стало 800 ??? :) Убрал код по определению количества памяти с снова 80 запросов. %)

  • 5
    Евгений Овсянников
    марта 14, 2009 22:52

    Спасибо за статью! Есть над чем подумать и чем заняться в ближайшее время, чтобы облегчить жизнь моему хостингу http://www.exdll.ru/out/ChdFQwtLGkZXBVpdShVfV1QYRUYe/. А я их, бедных суппортовцев, достал уже своими вопросами по поводу некотрого затормаживания (а они молодцы — отвечают нормально, кстати). А дело, оказывается, вон в чём может быть. Как минимум нужно удалить половину плагинов.
    Ещё раз спасибо.

Написать комментарий