Skip to content

Latest commit

 

History

History
217 lines (152 loc) · 10.4 KB

File metadata and controls

217 lines (152 loc) · 10.4 KB
title Оптимизация WordPress
description Комплексная оптимизация производительности WordPress: хостинг, плагины, изображения, CDN, сжатие, база данных и масштабирование.

Оптимизировать WordPress нужно на любом уровне — от блога на shared-хостинге до высоконагруженного проекта. Если нужен быстрый результат — начните с кэширования.

Далее — системный подход к оптимизации по всем направлениям.

Факторы производительности

На скорость WordPress влияют:

  • Хостинг — тип и конфигурация сервера
  • Конфигурация WordPress — плагины, тема, настройки
  • Версии ПО — PHP, MySQL, веб-сервер
  • Контент — количество и размер изображений, скриптов, стилей
  • Трафик — объём и характер нагрузки
  • География — расстояние от сервера до посетителей
  • Статика — вынос медиа в S3-хранилище освобождает сервер и ускоряет отдачу

Хостинг

Типы хостинга и возможности оптимизации

Тип хостинга Доступные рычаги
Shared Плагины кэширования, оптимизация изображений, CDN
Managed Ограниченный выбор плагинов, встроенное кэширование
VPS / Dedicated Полный контроль: серверный кэш, PHP, MySQL, Nginx/Apache

На VPS/Dedicated к общим методам добавляются: серверный кэш, тонкая настройка ПО и Content Offloading.

Для WooCommerce-магазинов требования к хостингу выше: PHP 8.0+, memory limit ≥ 256MB, SSD/NVMe обязательно. Подробнее — в разделе WooCommerce: запуск и расширение.

Аппаратные характеристики

  • Количество и частота процессоров
  • Объём оперативной памяти
  • Тип диска (NVMe > SSD > HDD)
  • Канал связи

Хостинг-провайдеры предлагают более высокую производительность за более высокую цену.

Географическая дистанция

Расстояние между сервером и посетителем влияет на latency. CDN решает эту проблему, размещая копии статических файлов в разных регионах.

Характер нагрузки

  • Легитимный трафик (всплески посещений)
  • Brute-force атаки на /wp-login.php
  • Хотлинкинг изображений с других сайтов
  • DoS/DDoS атаки

Выявление и блокировка вредного трафика — часть стратегии оптимизации.

Оптимизация WordPress

Плагины

Каждый активный плагин добавляет PHP-код, который выполняется при каждом запросе:

# Измерение влияния плагинов через WP-CLI
wp plugin list --status=active

Правила:

  • Держите только необходимые плагины активными
  • Деактивируйте и удаляйте неиспользуемые
  • Отдавайте предпочтение легковесным альтернативам
  • Тестируйте влияние нового плагина на скорость (см. инструменты тестирования)

Темы

Тяжёлые темы с page builder'ами генерируют избыточный DOM и подключают лишние скрипты. Выбирайте тему, соответствующую реальным потребностям, а не «на всякий случай».

Изображения

Оптимизация на этапе загрузки:

  • Сжимайте до загрузки (TinyPNG, Squoosh)
  • Используйте правильный формат: WebP для фотографий, SVG для иконок

Автоматизация:

// Автоматическое качество JPEG при загрузке
add_filter('jpeg_quality', function() {
    return 82; // WordPress default is 82
});

Плагины вроде EWWW Image Optimizer или Smush автоматизируют сжатие.

Content Offloading (CDN)

Вынос статического контента на отдельный домен или CDN:

  • CDN — Cloudflare, BunnyCDN, KeyCDN
  • Отдельный домен для статикиstatic.example.com
  • S3-совместимое объектное хранилище для медиафайлов

Подробный обзор и сравнение CDN-сервисов — CDN и производительность — сервисы.

Плагины вроде WP Offload Media автоматизируют перенос медиа-библиотеки.

Сжатие

# Apache: включение Gzip
<IfModule mod_deflate.c>
  AddOutputFilterByType DEFLATE text/html text/plain text/xml
  AddOutputFilterByType DEFLATE text/css application/javascript
  AddOutputFilterByType DEFLATE application/json application/xml
</IfModule>
# Nginx: включение Gzip
gzip on;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml;
gzip_min_length 256;

База данных

InnoDB против MyISAM

Все таблицы WordPress должны использовать InnoDB:

-- Проверить движок таблиц
SELECT TABLE_NAME, ENGINE
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = 'wordpress';

-- Конвертировать таблицу
ALTER TABLE wp_posts ENGINE = InnoDB;

Очистка базы

-- Удаление ревизий постов
DELETE FROM wp_posts WHERE post_type = 'revision';

-- Очистка спам-комментариев
DELETE FROM wp_comments WHERE comment_approved = 'spam';

-- Удаление transient-записей
DELETE FROM wp_options WHERE option_name LIKE '_transient_%';

Autoloaded Options

Опции с autoload = 'yes' загружаются при каждом запросе. Большой объём таких опций замедляет WordPress:

-- Проверить размер autoloaded-опций
SELECT SUM(LENGTH(option_value)) as total_size
FROM wp_options
WHERE autoload = 'yes';

Плагины часто добавляют свои опции в autoload без необходимости. Используйте wp option update <name> <value> --autoload=no через WP-CLI для некритичных опций.

Autoloaded Options в WP-CLI

# Посмотреть размер autoloaded-опций
wp option list --autoload=yes --format=count

# Найти самые большие опции
wp db query "SELECT option_name, LENGTH(option_value) as size
  FROM wp_options WHERE autoload='yes'
  ORDER BY size DESC LIMIT 20"

Масштабирование

Несколько серверов

При высоких нагрузках компоненты WordPress разносятся по серверам:

  • База данных — отдельный сервер (меняется DB_HOST в wp-config.php)
  • Статика — CDN или отдельный домен (Content Offloading)
  • Балансировщик нагрузки — распределение трафика между несколькими веб-серверами
  • HyperDB — замена WPDB для работы с реплицированными и партицированными базами данных

Оптимизация ПО

Компонент Методы
Веб-сервер Apache MPM Event, Nginx worker_processes, keepalive, кэш-заголовки
PHP OPcache, APC/u, свежая версия (см. PHP-оптимизация)
MySQL/MariaDB InnoDB, query cache, тюнинг буферов, slow query log
DNS Вынос DNS на внешний сервис снижает нагрузку
Почта Не запускайте почтовый сервер на сервере WordPress — используйте внешний SMTP

Инструменты тестирования

Дополнительные материалы


Источник: WordPress Developer Handbook — Optimization