Медленный WordPress теряет посетителей и позиции в Google. Быстрый сайт начинается с NVMe-хостинга и правильной настройки кэширования.
1. Кэширование страниц
Установите плагин кэширования — это самое важное улучшение:
- WP Rocket — лучший (платный, $59/год). Включает всё из коробки
- LiteSpeed Cache — бесплатный, идеально на LiteSpeed-серверах
- W3 Total Cache — бесплатный, гибкая настройка
2. Оптимизация изображений
# Конвертация в WebP через плагин:
# ShortPixel, Imagify, или WebP Express
# Или через командную строку:
sudo apt install webp
cwebp -q 85 image.jpg -o image.webp
Дополнительно:
- Установите плагин Smush или ShortPixel для сжатия без потери качества
- Добавьте атрибут
loading="lazy"— WP 5.5+ делает это автоматически - Используйте правильные размеры: не загружайте 4000px для миниатюры 300px
3. Минификация CSS и JS
В WP Rocket: включите Minify CSS files и Minify JavaScript files.
Бесплатная альтернатива — плагин Autoptimize.
4. Cloudflare CDN (бесплатно)
- Зарегистрируйтесь на cloudflare.com
- Добавьте домен → Cloudflare выдаст NS-серверы
- Замените NS в настройках домена у регистратора
- Включите Caching → Caching Level: Standard
5. PHP 8.2 вместо 7.4
В cPanel → Версии PHP переключите на PHP 8.2. Прирост производительности — до 30%.
Результаты оптимизации
| До оптимизации | После оптимизации |
|---|---|
| LCP: 4.8s | LCP: 1.2s |
| PageSpeed: 42 | PageSpeed: 91 |
| Размер страницы: 3.2 MB | Размер страницы: 0.8 MB |
Частые ошибки при ускорении WordPress
Агрессивная оптимизация без понимания причины чаще ломает сайт, чем ускоряет его. Разберём типичные ошибки.
Fatal error: Allowed memory size of 268435456 bytes exhausted (tried to allocate 20480 bytes) in /wp-includes/class-wp-image-editor-imagick.php on line 226
Эта ошибка появляется при массовой регенерации миниатюр или конвертации в WebP через wp media regenerate либо плагин ShortPixel: PHP упирается в лимит memory_limit (обычно 256 МБ на хостинге), обрабатывая крупные исходники. Решение — поднять лимит в php.ini до 512M на время конвертации или обрабатывать изображения партиями по 50–100 файлов.
Invalid command 'AddOutputFilterByType', perhaps misspelled or defined by a module not included in the server configuration
Такая запись в логах Apache означает, что модуль mod_deflate не подключён на сервере, а правило в .htaccess уже добавлено. Без <IfModule mod_deflate.c> сайт упадёт с 500-й ошибкой сразу после сохранения файла — оборачивайте директивы сжатия в проверку модуля, как в примере выше.
Сравнение кэширующих плагинов
| Плагин | Стоимость | Настройка | Кэш на LiteSpeed | Сложность |
|---|---|---|---|---|
| WP Rocket | $59/год | Автоматическая | Нет | Низкая |
| LiteSpeed Cache | Бесплатно | Частичная | Да | Средняя |
| W3 Total Cache | Бесплатно | Ручная | Нет | Высокая |
LiteSpeed Cache даёт максимум только на серверах с веб-сервером LiteSpeed — на Apache или Nginx часть функций (например, ESI) недоступна, и разница с W3 Total Cache стирается.
Когда ускорение не даст эффекта
Кэш страниц не спасает интернет-магазин на WooCommerce: страницы корзины, оформления заказа и личного кабинета всегда динамические и не кэшируются полностью — для них нужен объектный кэш вроде Redis для WordPress, а не только плагин кэширования страниц. Если TTFB выше 600 мс уже на пустой странице без плагинов — проблема не в WordPress, а в перегруженном тарифе хостинга или медленном диске; кэш ускорит повторные визиты, но не решит первопричину. Плагины-конструкторы страниц (Elementor, Divi) добавляют собственный CSS/JS на каждый запрос — минификация уменьшит размер файлов, но не количество запросов к серверу.
Как проверить результат
Одного PageSpeed Insights недостаточно — он показывает Lab Data (один прогон) и Field Data (реальные визиты за 28 дней), которые могут расходиться. Проверяйте оба показателя и TTFB напрямую:
curl -o /dev/null -s -w "TTFB: %{time_starttransfer}s\nTotal: %{time_total}s\n" https://example.com/
curl -I https://example.com/ | grep -i "cache\|content-encoding"
В заголовках ищите Content-Encoding: gzip или br и признаки кэша (X-Cache: HIT, cf-cache-status: HIT). Если после включения плагина заголовки не изменились — кэш не активировался, проверьте конфликт с другим плагином кэширования или настройками Cloudflare.
На тарифах с общим процессором соседние сайты создают периодические скачки нагрузки, которые кэш страниц не сглаживает, — здесь помогает переход на тариф с гарантированными ресурсами, а не ещё один плагин. Итог по порядку действий: сначала устраняют первопричину замедления (тяжёлые плагины, устаревшая версия PHP, отсутствие кэша вообще), и только затем подключают CDN и минификацию — в обратном порядке эффект будет заметно слабее и держаться недолго.