Чи гальмують плагіни швидкість роботи WordPress?

Ця коротка замітка присвячується питанням з рубрики: «що краще за плагін або код у functions.php ». А також твердженням недосвідчених про те, що плагін – це зло саме по собі, тому що гальмує WordPress. Нижче розберемося, як впливає швидкість завантаження WordPress один і кілька плагінів.

Наступне питання мені колись поставили у розділі питань:

Я знаю, що велика кількість плагінів WordPress уповільнює роботу сайту. У мене питання: я використовував плагіни для створення таблиць на сторінках і після їх створення плагіни деактивував. Таблиці створені та працюють.

А чи впливає швидкість сайту такі деактивовані плагіни. Те саме з плагінами зі створення та редагування меню і т.д. Прошу пояснити докладніше. Дякую!

Давайте розбиратися, що до чого…

Факт наявності плагіна не навантажує WordPress!

Твердження, що “велика кількість плагінів WordPress уповільнює роботу сайту”. Досить спірне і, по суті, неправильне! Тут все залежить від плагінів: їхнього функціоналу та грамотно написаного коду.

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

Щоб зрозуміти чому відбувається саме так, розглянемо, як завантажуються плагіни.

Принцип підвантаження плагінів

WordPress при активації плагіна записує шлях на його головний файл в опцію active_plugins . Далі, при завантаженні будь-якої сторінки (адмінки, фронту, крона, AJAX, REST) ​​WordPress отримує список всіх активних плагінів з опції active_plugins , яка містить масив назв головних файлів плагінів. Після отримання опції WP просто підключає головний файл кожного плагіна PHP. За отримання списку активних плагінів відповідає функція 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)” і можливо він вкаже вам на “найслабшу ланку”.

Залишити коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *