WordPress как на ладони
wordpress jino

Тормозят ли плагины скорость работы 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», «Right Now Reloaded».

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

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

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

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

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

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

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

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

  • Установить плагин «P3 (Plugin Performance Profiler)» и возможно он укажет вам на «самое слабое звено».
Тормозят ли плагины скорость работы WordPress? 11 комментариев
Полезные 1 Все
  • campusboy1946 cайт: www.youtube.com/c/wpplus @

    Спасибо за статью!

    Был опыт работы с P3 (Plugin Performance Profiler). На хостинге хорошо показывал. Попробовал на локалке - Опен Сервер падал, а точнее база, так как он при проверке создаёт колоссальную нагрузку. Причем после перезагрузки сервера и заходе на сайт начинает снова его тестить автоматически, так как при начале теста видать в базу об этом пишет и при падении сервера, соответственно, не успевает эту метку убрать. Решается только переименованием папки плагина.

    2
    Ответить3 месяца назад #
  • ninja cайт: wpninja.ru

    Привет, спасибо за статью.
    Полностью соглашусь с автором. А вообще чаще всего проблема с медленной работой сайта еще заключается в том, что многие плагины подключают свои стили и js файлы, собственно тем самым мешая быстрой отрисовке страницы. У некоторых плагинов, даже их деактивация в админке не дает результата и подключенные css и js так и продолжают подгружаться. Поэтому помимо деактивации в админке, советую так же посмотреть какие файлы у вас подключаются на фронтенде.

    Ответить2 месяца назад #
  • Вячеслав

    Не согласен с автором. Вы не подумали над тем, что у каждого плагина выходят обновления (даже если и не выходят, функционал обрабатывает), то от куда же плагины получают эту инфу, правильно со стороннего сервера, а это нагрузка лишняя. Второй аспект, проверьте количество запросов в базу данных допустим с установленным дефолтным плагином hello word и без. И последнее, при установке большого количества плагинов, существует большая (в некоторых случаях огромная) вероятность конфликтов между ними.

    -1
    Ответить2 месяца назад #
    • Kama4662

      у каждого плагина выходят обновления (даже если и не выходят, функционал обрабатывает), то от куда же плагины получают эту инфу

      Обновления фрон вообще не тормозят, админку иногда на специальных страницах. И я уже молчу, что хоть у тебя 10 плагинов, хоть 1 запрос на сервера ВП будет всегда одинаковый на проверку новых версий, там разом все запрашивается...
      Тут почитай как обновления проверяются...

      Ты можешь быть не согласен, но факты останутся фактами... Эта статья к тому, что нет разницы по скорости, совать какой-то свой код в functions.php или сделать из него плагин...

      Ответить2 месяца назад #
      • Вячеслав

        из трёх моих аргументов вы ответили только на один

        Ответить2 месяца назад #
        • Kama4662

          На важный ответил, остальные не важны. Остальные относятся к качеству плагина, его кода, а не к факту его установки... Плагин hello word - не знаю такой. Базовый Hello Dolly на запросы не влияет и ни на что вообще не влияет. Проверь сам еще раз... Найди реальные факты, потом я может тебя выслушаю и не только я. А пока, ты ерунду какую-то говоришь и в теме судя по всему мало разбираешься и даже то что написано осознать не можешь или троллишь просто smile

          Ответить2 месяца назад #
          • Вячеслав

            Вы крайне хамски отвечаете, нет никакого желания дальше продолжать дискуссию, удачи!

            Ответить2 месяца назад #
  • Александр cайт: protaro.info

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

    1
    Ответитьмесяц назад #
    • campusboy1946 cайт: www.youtube.com/c/wpplus @

      Отличный ответ. Дополню, что по этому правилу надо отбирать и код, который предлагают вставить в funcrions.php, соответственно.

      1
      Ответить10 дней назад #
  • shevan219 cайт: wp-best.ru

    Согласен, в погоне за сниппетами для functions.php (в первую очередь якобы для реализации без плагина) часто решение бывает даже не столь годным как выбор готового плагина.

    Код он и в Африке код, неважно откуда он грузится.

    У меня самого штук 50 плагинов, 40 из них полностью служебные, на загрузку фронтенда не влияют.

    Спасибо за несение правды в массу. smile

    4
    Ответитьмесяц назад #

Здравствуйте, !

Ваш комментарий