WordPress как на ладони
Недорогой хостинг для сайтов на WordPress: wordpress.jino.ru Авторские Темы для WordPress

Тормозят ли плагины скорость работы WordPress?

Эта короткая заметка посвящается вопросам из рубрики: «что лучше плагин или код в functions.php». А также утверждениям неопытных, о том, что плагин - это зло само по себе, потому что тормозит WordPress. Ниже разберемся, как влияет на скорость загрузки WordPress один и несколько плагинов.

Следующий вопрос мне некогда задали в разделе вопросов:

Я знаю, что большое количество плагинов wordpress замедляет работу сайта. У меня вопрос: я использовал плагины для создания таблиц на страницах, и после их создания плагины деактивировал. Таблицы созданы и работают.

А влияет ли на скорость сайта такие деактивированные плагины. То же самое с плагинами по созданию и редактированию меню и т.д. Прошу разъяснить поподробнее. Спасибо!

Давайте разбираться что к чему...

Факт наличия плагина не нагружает WordPress!

Утверждение, что «большое количество плагинов WordPress замедляет работу сайта». Довольно спорное и по сути неверное! Тут все зависит от плагинов: их функционала и грамотно написанного кода.

Сами по себе активные плагины не влияют на работу сайта в целом и на фронт-энд в частности. А неактивные тем более, они просто занимают место на диске и немного влияют на скорость загрузки страницы плагинов в админке, так как там они отображаются и для этого с главных файлов считывается информация. И больше ни на что!

Чтобы понять почему происходит именно так, рассмотрим как загружаются плагины.

Принцип подгрузки плагинов

WordPress при активации плагина, записывает путь на его главный файл в опцию active_plugins. Далее, при загрузке любой страницы (админки, фронта, крона, AJAX, REST), WordPress получает список всех активных плагинов из опции active_plugins, которая содержит массив названий главных файлов плагинов. После получения опции WP просто подключает главный файл каждого плагина в PHP. За получение списка активных плагинов отвечает функция wp_get_active_and_valid_plugins(). Сама конструкция подключения всех плагинов находится в файле wp-settings.php и выглядит так:

// Load active plugins.
foreach ( wp_get_active_and_valid_plugins() as $plugin ) {
	wp_register_plugin_realpath( $plugin );
	include_once( $plugin );
}
unset( $plugin );

А так выглядит опция, где хранятся активные плагины:

$active_plugins = get_option( 'active_plugins' );

/* Получим в $active_plugins
Array
(
	[0] => 404-error-monitor/index.php
	[1] => backupwordpress/backupwordpress.php
	[2] => democracy-poll/democracy.php
	[3] => disable-emojis/disable-emojis.php
)
*/

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

Неактивных плагинов в списке нет, а значит они вообще никак ни на что не влияют!

33 плагина

Давайте представим, что у нас есть 32 плагина, каждый из которых состоит из пары строк кода и вносит незначительные изменения в работу WP. И есть еще один плагин, который состоит из 1000 строк кода и вносит изменений в несколько раз больше, чем предыдущие 32 плагина вместе взятые: он отключает фильтры, включает свои, совершает запросы к БД, что-то обновляет/проверяет, добавляет свой функционал на сайт и выводит какие-то блоки в админке и фронте и делает что-нибудь еще.

Если сравнить первые 32 и последний 1 плагин, то последний будет нагружать систему в разы больше! К такому примеру можно отнести тяжеловеса «WooCommerce» и мелочь вроде «Disable Emojis», «Disable File Editor», «Cyr to Lat».

Фраза «чем больше плагинов, тем хуже грузится WordPress» - это глупость. Не количество, а качество имеет значение!

Когда плагины влияют на скорость работы сайта?

Влияние на скорость работы происходит в коде самого плагина, поэтому все зависит от функционала и хорошо или плохо написанного кода.

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

Кстати, сам WordPress делает всего один запрос к своему API и получает данные для всех установленных из репозитория плагинов разом. А платные плагины (если у них вообще есть автообновление), как правило делают один запрос на один плагин!

Как узнать какой плагин больше всего тормозит систему?

Если возникли проблемы и виноват скорее всего плагин, то можно:

  • Использовать старый добрый метод: отключать плагины по одному и смотреть как ведет себя сайт.

  • Установить известный плагин «Query Monitor» и посмотреть что он показывает по нагрузкам. Если в нем указаны излишние нагрузки, то при этом обязательно будет видно какой плагин, функция, хук или файл создает нагрузку. Так можно понять, какой плагин виноват...

  • Установить плагин «P3 (Plugin Performance Profiler)» и возможно он укажет вам на «самое слабое звено».
13 комментов
Полезные 1 Все
    Войти