Оптимизация WordPress
Оптимизация WordPress
Заголовок раздела «Оптимизация WordPress»Оптимизировать WordPress нужно на любом уровне — от блога на shared-хостинге до высоконагруженного проекта. Если нужен быстрый результат — начните с кэширования.
Далее — системный подход к оптимизации по всем направлениям.
Факторы производительности
Заголовок раздела «Факторы производительности»На скорость WordPress влияют:
- Хостинг — тип и конфигурация сервера
- Конфигурация WordPress — плагины, тема, настройки
- Версии ПО — PHP, MySQL, веб-сервер
- Контент — количество и размер изображений, скриптов, стилей
- Трафик — объём и характер нагрузки
- География — расстояние от сервера до посетителей
Хостинг
Заголовок раздела «Хостинг»Типы хостинга и возможности оптимизации
Заголовок раздела «Типы хостинга и возможности оптимизации»| Тип хостинга | Доступные рычаги |
|---|---|
| Shared | Плагины кэширования, оптимизация изображений, CDN |
| Managed | Ограниченный выбор плагинов, встроенное кэширование |
| VPS / Dedicated | Полный контроль: серверный кэш, PHP, MySQL, Nginx/Apache |
На VPS/Dedicated к общим методам добавляются: серверный кэш, тонкая настройка ПО и Content Offloading.
Аппаратные характеристики
Заголовок раздела «Аппаратные характеристики»- Количество и частота процессоров
- Объём оперативной памяти
- Тип диска (NVMe > SSD > HDD)
- Канал связи
Хостинг-провайдеры предлагают более высокую производительность за более высокую цену.
Географическая дистанция
Заголовок раздела «Географическая дистанция»Расстояние между сервером и посетителем влияет на latency. CDN решает эту проблему, размещая копии статических файлов в разных регионах.
Характер нагрузки
Заголовок раздела «Характер нагрузки»- Легитимный трафик (всплески посещений)
- Brute-force атаки на
/wp-login.php - Хотлинкинг изображений с других сайтов
- DoS/DDoS атаки
Выявление и блокировка вредного трафика — часть стратегии оптимизации.
Оптимизация WordPress
Заголовок раздела «Оптимизация WordPress»Плагины
Заголовок раздела «Плагины»Каждый активный плагин добавляет PHP-код, который выполняется при каждом запросе:
# Измерение влияния плагинов через WP-CLIwp 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)
Заголовок раздела «Content Offloading (CDN)»Вынос статического контента на отдельный домен или CDN:
- CDN — Cloudflare, BunnyCDN, KeyCDN
- Отдельный домен для статики —
static.example.com - S3-совместимое объектное хранилище для медиафайлов
Плагины вроде 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: включение Gzipgzip on;gzip_types text/plain text/css application/json application/javascript text/xml application/xml;gzip_min_length 256;База данных
Заголовок раздела «База данных»InnoDB против MyISAM
Заголовок раздела «InnoDB против MyISAM»Все таблицы WordPress должны использовать InnoDB:
-- Проверить движок таблицSELECT TABLE_NAME, ENGINEFROM information_schema.TABLESWHERE 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
Заголовок раздела «Autoloaded Options»Опции с autoload = 'yes' загружаются при каждом запросе. Большой объём таких опций замедляет WordPress:
-- Проверить размер autoloaded-опцийSELECT SUM(LENGTH(option_value)) as total_sizeFROM wp_optionsWHERE autoload = 'yes';Плагины часто добавляют свои опции в autoload без необходимости. Используйте wp option update <name> <value> --autoload=no через WP-CLI для некритичных опций.
Autoloaded Options в 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 |
Инструменты тестирования
Заголовок раздела «Инструменты тестирования»- PageSpeed Insights
- WebPageTest
- GTmetrix
- Lighthouse (встроен в Chrome DevTools)
- Query Monitor — плагин для отладки внутри WordPress
Дополнительные материалы
Заголовок раздела «Дополнительные материалы»- WordCamp Performance Presentations — доклады с WordCamp
- Yahoo! Best Practices for Speeding Up Your Web Site
- Кэширование WordPress — глубже о видах кэширования
- PHP-оптимизация — настройка PHP для WordPress