Оптимізація продуктивності WordPress (кешування, БД)

Наша компанія займається розробкою, підтримкою та обслуговуванням сайтів будь-якої складності. Від простих односторінкових сайтів до масштабних кластерних систем, побудованих на мікро сервісах. Досвід розробників підтверджено сертифікатами від вендорів.
Розробка та обслуговування будь-яких видів сайтів:
Інформаційні сайти або веб-програми
Сайти візитки, landing page, корпоративні сайти, онлайн каталоги, квіз, промо-сайти, блоги, ресурси новин, інформаційні портали, форуми, агрегатори
Сайти або веб-програми електронної комерції
Інтернет-магазини, B2B-портали, маркетплейси, онлайн-обмінники, кешбек-сайти, біржі, дропшиппінг-платформи, парсери товарів
Веб-програми для управління бізнес-процесами
CRM-системи, ERP-системи, корпоративні портали, системи управління виробництвом, парсери інформації
Сайти або веб-програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, конструктори сайтів, портали надання електронних послуг, відеохостинги, тематичні портали

Це лише деякі з технічних типів сайтів, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Пропоновані послуги
Показано 1 з 1 послугУсі 2065 послуг
Оптимізація продуктивності WordPress (кешування, БД)
Середня
~3-5 робочих днів
Часті питання
Наші компетенції:
Етапи розробки
Останні роботи
  • image_website-b2b-advance_0.png
    Розробка сайту компанії B2B ADVANCE
    1262
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1171
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    874
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1094
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    831
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Розробка веб-сайту для компанії ФІКСПЕР
    851

Оптимізація продуктивності WordPress (кешування, база даних)

WordPress з дефолтними налаштуваннями повільний: кожен запит до сторінки виконує 30–100 SQL-запитів, завантажує десятки плагінів і генерує HTML заново. Правильна оптимізація дає Time to First Byte < 200 мс і Core Web Vitals у зеленій зоні.

Аудит: що сповільнює

Перед оптимізацією — вимірювання. Інструменти:

  • Query Monitor (плагін) — показує всі SQL-запити, гаки, повільні запити для кожної сторінки
  • New Relic або Tideways — профайлер PHP для production
  • GTmetrix / PageSpeed Insights — зовнішні метрики

Типові причини повільної роботи:

  1. Немає PHP OPcache
  2. Немає object cache (Memcached/Redis)
  3. Повільні плагіни (плагін ≠ винуватець, але WP_Query всередині — часто)
  4. Таблиця wp_options з тисячами autoload-опцій
  5. Величезна таблиця wp_postmeta
  6. Немає кешування сторінок

PHP OPcache

# /etc/php/8.3/fpm/conf.d/10-opcache.ini
opcache.enable=1
opcache.memory_consumption=256
opcache.interned_strings_buffer=16
opcache.max_accelerated_files=10000
opcache.revalidate_freq=0          ; 0 у production (не перевіряємо зміни)
opcache.validate_timestamps=0      ; 0 у production
opcache.fast_shutdown=1
opcache.jit=tracing
opcache.jit_buffer_size=64m

Приріст від OPcache — 30–50% зменшення часу виконання PHP.

Redis для object cache

apt install redis-server
# У WordPress
composer require wpackagist-plugin/redis-cache

wp-config.php:

define('WP_CACHE_KEY_SALT', 'yourdomain.com_');
define('WP_REDIS_HOST', '127.0.0.1');
define('WP_REDIS_PORT', 6379);
define('WP_REDIS_DATABASE', 0);
define('WP_REDIS_TIMEOUT', 1);
define('WP_REDIS_READ_TIMEOUT', 1);

Redis кешує результати WP_Query, опції (get_option), дані користувачів. Повторний запит до однієї сторінки: з Redis — 1–5 SQL-запитів замість 30–100.

Кешування сторінок

Для високонавантажених сайтів — Nginx FastCGI Cache (обходячи PHP повністю):

fastcgi_cache_path /var/cache/nginx/wordpress levels=1:2 keys_zone=WORDPRESS:100m inactive=60m;
fastcgi_cache_key "$scheme$request_method$host$request_uri";

server {
    location ~ \.php$ {
        fastcgi_cache WORDPRESS;
        fastcgi_cache_valid 200 301 302 60m;
        fastcgi_cache_bypass $skip_cache;
        fastcgi_no_cache $skip_cache;

        # Не кешуємо авторизованих користувачів та корзину
        set $skip_cache 0;
        if ($http_cookie ~* "wordpress_logged_in|woocommerce_cart_hash") {
            set $skip_cache 1;
        }
        if ($request_method = POST) { set $skip_cache 1; }

        fastcgi_pass unix:/var/run/php/php8.3-fpm.sock;
        # ...
    }
}

Кешовані сторінки відправляються з TTFB < 10 мс.

Очищення бази даних

-- Видалення старих редакцій (залишити останні 5 на пост)
DELETE p FROM wp_posts p
LEFT JOIN (
    SELECT ID FROM wp_posts
    WHERE post_type = 'revision'
    ORDER BY post_date DESC
    LIMIT 5
) keep ON p.ID = keep.ID
WHERE p.post_type = 'revision' AND keep.ID IS NULL;

-- Видалення сирітських postmeta
DELETE pm FROM wp_postmeta pm
LEFT JOIN wp_posts p ON p.ID = pm.post_id
WHERE p.ID IS NULL;

-- Аналіз autoload options (причина повільного get_option)
SELECT option_name, LENGTH(option_value) as size
FROM wp_options
WHERE autoload = 'yes'
ORDER BY size DESC
LIMIT 20;

-- Вимкнути autoload для непотрібних опцій
UPDATE wp_options SET autoload = 'no'
WHERE option_name IN ('_transient_some_plugin_cache', 'some_large_option');

Оптимізація зображень

// Конвертація в WebP при завантаженні (через Imagick)
add_filter('wp_handle_upload', function (array $upload): array {
    if (!str_starts_with($upload['type'], 'image/')) return $upload;

    $image = new Imagick($upload['file']);
    $image->setImageFormat('webp');
    $image->setOption('webp:lossless', 'false');
    $image->setCompressionQuality(82);

    $webp_path = preg_replace('/\.(jpe?g|png)$/i', '.webp', $upload['file']);
    $image->writeImage($webp_path);

    return $upload;
});

Або через плагін ShortPixel / Imagify з інтеграцією CDN.

Результати типової оптимізації

Метрика До Після
TTFB (без кешу) 800–2000 мс 150–400 мс
TTFB (з FastCGI кешем) 5–15 мс
SQL-запитів на сторінку 60–120 5–15
LCP 3–6 с 1–2 с

Терміни

Базова оптимізація (OPcache, Redis, очищення БД, кеш сторінок) — 2–3 дні. Повний аудит з профайлінгом і оптимізацією повільних запитів — 5–7 днів.