Как ускорить сайт на WordPress

Медленный сайт — это не просто неудобство. Каждая лишняя секунда загрузки увеличивает процент отказов, снижает конверсию и ухудшает позиции в Google. Но есть и хорошая новость: WordPress отлично поддаётся оптимизации, и большинство улучшений можно сделать без глубоких технических знаний.
В этом гиде мы пройдём весь путь — от понимания того, что именно замедляет сайт, до конкретных настроек, которые реально дают результат. Материал рассчитан на владельцев сайтов, администраторов и разработчиков среднего уровня.

1. Почему WordPress-сайты тормозят

Прежде чем что-то оптимизировать, стоит понять причины. WordPress — гибкая система, и именно эта гибкость нередко становится источником проблем с производительностью.
Слишком много плагинов. Каждый плагин — это дополнительный PHP-код, SQL-запросы и, часто, лишние CSS/JS-файлы на всех страницах без исключения. Пять плохо написанных плагинов могут замедлить сайт сильнее, чем двадцать качественных.
Тяжёлые изображения. Несжатые JPEG и PNG-файлы по 2–5 МБ — одна из самых распространённых причин медленной загрузки. Браузер не может показать страницу, пока не загрузит весь «тяжёлый» контент в верхней части.
Отсутствие кеширования. Без кеша WordPress при каждом запросе выполняет PHP-скрипты и делает десятки запросов к базе данных — даже если страница вообще не менялась.
Неоптимизированная база данных. Со временем WordPress накапливает «мусор»: тысячи ревизий записей, просроченные транзиенты, следы удалённых плагинов. Это замедляет SQL-запросы.
Блокирующие скрипты. JavaScript, который загрузится в <head> без атрибута defer, заблокирует отображение страниц — проверки браузера, доки скрипта не загружать и не использовать.

2. Сначала измеряем — потом оптимизируем

Оптимизация наугад — это трата времени. Чтобы понять, где именно проблема, нужны конкретные данные. Google внедрил набор метрик Core Web Vitals, которые напрямую влияют на ранжирование сайта.

Метрика Цель Тревожная зона
LCP — загрузка основного контента < 2.5 с > 4.0 с
INP — реакция на взаимодействие < 200 мс > 500 мс
CLS — стабильность макета < 0.1 > 0.25
TTFB — время до первого байта < 800 мс > 1800 мс

Инструменты для анализа:

Google PageSpeed Insights — основной инструмент. Показывает реальные данные из браузеров пользователей (поле) и лабораторные результаты (Lighthouse). Анализируйте отдельно мобильную и десктопную версии — разница бывает разительной.
GTmetrix — детальный каскад загрузки (Waterfall). Позволяет увидеть, какие именно ресурсы загружаются долго и что блокирует рендеринг.
WebPageTest — самый гибкий вариант для углублённого тестирования: выбор локации, эмуляция 3G/4G, видеозапись процесса загрузки.
Query Monitor — плагин для WordPress, который показывает все SQL-запросы, время их выполнения и стек вызовов прямо в админке.

Важно. Тестируйте в режиме инкогнито и без VPN. Сделайте 3–5 измерений и усредните результаты — одиночный тест может дать искаженную картину из-за сетевых колебаний.

3. Хостинг: от чего зависит скорость на уровне сервера

Хостинг — важный фактор, но не всегда решающий. Качественный виртуальный хостинг без агрессивного overselling вполне подходит для большинства WordPress-сайтов: блогов, корпоративных страниц, небольших магазинов. Проблемы возникают прежде всего из-за провайдеров, которые размещают слишком много сайтов на одном сервере.
На что обращать внимание при выборе тарифа: наличие SSD-дисков (не HDD), поддержка актуальной версии PHP (8.1+), включённый OPcache, выделенная память для процессов PHP. Эти параметры важнее формального типа хостинга.

Когда действительно стоит переходить на VPS

Переезд на VPS или выделенный сервер имеет смысл, когда сайт действительно перерос shared-среду: крупный интернет-магазин с десятками тысяч товаров, портал с активным пользовательским контентом или сайт с большими пиковыми нагрузками одновременных посетителей. В остальных случаях — сначала оптимизируйте, потом думайте об апгрейде.

PHP: самое простое ускорение

Версия PHP напрямую влияет на скорость выполнения кода. PHP 8.1+ в среднем на 25–40% быстрее PHP 7.4 благодаря JIT-компиляции. Проверить текущую версию можно в панели управления хостингом — и переключить её там же, без каких-либо изменений на сайте.

Практический совет. OPcache — важный PHP-модуль, который стоит использовать. Без него PHP компилирует каждый скрипт заново при каждом запросе. С OPcache скомпилированный код хранится в памяти. Результат: TTFB снижается вдвое или больше без каких-либо других изменений.

4. Кеширование: сайт, который не думает дважды

Кеширование — самая эффективная оптимизация WordPress. Идея проста: вместо того чтобы каждый раз выполнять PHP и делать запросы к базе данных, мы сохраняем готовый результат и отдаём его следующим посетителям напрямую.

Кеширование страниц (Page Cache)

Page Cache сохраняет готовый HTML каждой страницы на диске или в памяти. Первый посетитель генерирует страницу привычным образом (PHP + MySQL), все последующие получают готовый файл. TTFB падает с 300–600 мс до 20–50 мс — без изменений в коде.
Настраивается через кеширующий плагин.

Object Cache: APCu, Redis или Memcached

WordPress имеет встроенный object cache, но он живёт только в рамках одного запроса — при следующем запросе всё обнуляется. Persistent object cache хранит объекты между запросами и существенно снижает количество обращений к базе данных.

  • APCu — PHP-расширение для кеширования в памяти процесса. Доступно на большинстве shared-хостингов там, где Redis и Memcached отсутствуют. Плагин W3 Total Cache поддерживает APCu нативно — это удобный выбор для shared-среды.
  • Redis — самый функциональный вариант: поддерживает сложные структуры данных, персистентность и репликацию. Доступен на VPS или выделенных серверах.
  • Memcached — более простая альтернатива. Хорошо справляется с кешированием объектов, но без расширенных возможностей Redis. Как и Redis, может быть установлен на VPS или выделенных серверах.
Результат. Правильно настроенный object cache сокращает количество SQL-запросов на 60–80% для типового WordPress-сайта. Это особенно заметно на страницах с динамическим контентом, виджетами и сложными запросами.

Browser Cache: пусть браузер помнит

Настройте HTTP-заголовки Cache-Control для статических ресурсов — и браузер будет хранить их локально. При повторном посещении страница загрузится значительно быстрее, потому что CSS, изображения и шрифты уже есть на устройстве.
Рекомендуемые TTL: изображения, шрифты, CSS/JS с хешированными именами — 1 год. HTML-страницы — 0 или не более нескольких часов. Настраивается через .htaccess (Apache), конфиг nginx или кеширующий плагин.
Для активации Browser Cache без использования плагинов достаточно добавить следующие правила в файл .htaccess:

<IfModule mod_expires.c>
ExpiresActive On

# Images
ExpiresByType image/jpeg «access plus 1 year»
ExpiresByType image/gif «access plus 1 year»
ExpiresByType image/png «access plus 1 year»
ExpiresByType image/webp «access plus 1 year»
ExpiresByType image/svg+xml «access plus 1 year»
ExpiresByType image/x-icon «access plus 1 year»

# Video
ExpiresByType video/webm «access plus 1 year»
ExpiresByType video/mp4 «access plus 1 year»
ExpiresByType video/mpeg «access plus 1 year»

# Fonts
ExpiresByType font/ttf «access plus 1 year»
ExpiresByType font/otf «access plus 1 year»
ExpiresByType font/woff «access plus 1 year»
ExpiresByType font/woff2 «access plus 1 year»
ExpiresByType application/font-woff «access plus 1 year»
ExpiresByType application/font-woff2 «access plus 1 year»

# CSS, JavaScript
ExpiresByType text/css «access plus 1 year»
ExpiresByType text/javascript «access plus 1 year»
ExpiresByType application/javascript «access plus 1 year»

# Others
ExpiresByType application/pdf «access plus 1 year»
ExpiresByType image/vnd.microsoft.icon «access plus 1 year»
</IfModule>

5. GZIP: сжимаем все

Сжатие на уровне передачи — один из самых простых способов уменьшить размер страницы без изменений в коде или контенте. Сервер сжимает файл перед отправкой, браузер распаковывает его за миллисекунды. Для посетителя все прозрачно, а страница весит втрое меньше.

GZIP – проверенный стандарт, поддерживаемый абсолютно всеми браузерами и серверами. Если вы еще не включили ничего, начинайте с него.
Brotli — современный алгоритм от Google, который сжимает на 15–25% эффективнее GZIP при том же качестве. Поддерживается всеми актуальными браузерами (Chrome, Firefox, Safari, Edge) и современными серверами (nginx 1.11.6+, Apache с модулем mod_brotli). Если ваш хостинг поддерживает Brotli, используйте его. Если нет – GZIP уже дает отличный результат.

Как включить:
На большинстве хостингов GZIP уже включен по умолчанию. Если нет, вот как это исправить:

• Apache (.htaccess): дайте директивы mod_deflate или mod_gzip. Достаточно просто добавить следующий код:

<IfModule mod_deflate.c>
# Compress HTML, CSS, JavaScript, Text, XML and fonts
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/vnd.ms-fontobject
AddOutputFilterByType DEFLATE application/x-font
AddOutputFilterByType DEFLATE application/x-font-opentype
AddOutputFilterByType DEFLATE application/x-font-otf
AddOutputFilterByType DEFLATE application/x-font-truetype
AddOutputFilterByType DEFLATE application/x-font-ttf
AddOutputFilterByType DEFLATE application/x-javascript
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE font/opentype
AddOutputFilterByType DEFLATE font/otf
AddOutputFilterByType DEFLATE font/ttf
AddOutputFilterByType DEFLATE image/svg+xml
AddOutputFilterByType DEFLATE image/x-icon
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/javascript
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/xml
# Remove browser bugs (only needed for really old browsers)
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
Header append Vary User-Agent
</IfModule>
• Также большинство кеширующих плагинов делают это автоматически при активации.

6. Изображения: самый большой резерв скорости

Изображения составляют 50–70% веса средней веб-страницы. При этом их оптимизация — одна из самых простых задач: не нужно менять код, достаточно правильно настроить один плагин.

Современные форматы: WebP и AVIF

WebP даёт на 25–35% меньший размер файла по сравнению с JPEG при том же визуальном качестве. Поддерживается всеми современными браузерами. Плагин автоматически конвертирует существующие изображения и отдаёт WebP тем браузерам, которые его понимают.
AVIF — ещё более эффективный формат (до 50% лучше JPEG), но поддержка браузеров пока неполная. Используйте как дополнение к WebP через тег <picture> с fallback.

Lazy Loading — загружаем только то, что видно

Отложенная загрузка означает, что браузер загружает только изображения в видимой части экрана. Всё остальное — по мере прокрутки. WordPress 5.5+ добавляет атрибут loading=»lazy» автоматически.
Но есть нюанс: первое изображение на странице (которое входит в LCP) не должно иметь lazy loading. Наоборот — оно должно загружаться с приоритетом. Добавьте ему атрибут fetchpriority=»high» или используйте WordPress-функцию с параметром ‘loading’ => ‘eager’.

Правильные размеры и srcset

Не загружайте изображение 2000px там, где отображается миниатюра 300px. WordPress автоматически генерирует несколько размеров и использует атрибут srcset — но только если изображение вставлено через встроенный медиабраузер или функцию wp_get_attachment_image(). При прямом обращении по URL эта магия не работает

7. База данных: поддерживаем порядок

WordPress хранит в базе данных всё: записи, настройки, кешированные значения, логи плагинов. Со временем база «раздувается» — и запросы замедляются. Регулярное обслуживание занимает 10 минут и заметно влияет на TTFB.

Что удалять и как часто

  • Ревизии записей: WordPress хранит каждую версию каждой записи. Ограничьте их количество в wp-config.php:
    define(‘WP_POST_REVISIONS’, 5);
    и удалите накопленные. WP-CLI команда:
    wp post delete $(wp post list —post_type=’revision’ —format=ids)
  • Просроченные транзиенты:
    wp transient delete —expired
    Некоторые плагины оставляют тысячи строк в wp_options — это замедляет все запросы к этой таблице.
  • Spam и удалённые комментарии:
    wp comment delete $(wp comment list —status=spam —format=ids)
  • Оптимизация таблиц: OPTIMIZE TABLE в phpMyAdmin или wp db optimize. Одного раза в месяц достаточно.

Slow Query: находим узкие места

Query Monitor в WordPress показывает, какие запросы выполняются медленно в реальном времени для текущей страницы. Более 50 запросов на страницу — повод разобраться. Более 100 — серьёзная проблема.

8. CDN: сайт, который близок каждому

CDN (Content Delivery Network) — географически распределённая сеть серверов. Статические ресурсы (изображения, CSS, JS, шрифты) отдаются с узла, ближайшего к посетителю. Вместо того чтобы файл летел из Польши в Австралию — он уже находится в Сиднее.
Подключение CDN даёт два результата одновременно: меньшую задержку для географически удалённых посетителей и снижение нагрузки на основной сервер. Для сайтов с международной аудиторией это критически важно.

HTTP/2 и HTTP/3: современные протоколы

HTTP/2 поддерживает мультиплексирование — несколько запросов через одно соединение одновременно. Это устраняет проблему очереди запросов, актуальную для HTTP/1.1. Убедитесь, что ваш сервер поддерживает HTTP/2 — в современных nginx и Apache это стандартная функция.
HTTP/3 (на базе QUIC) идёт ещё дальше: устраняет задержку head-of-line blocking на уровне транспорта и лучше работает в условиях плохого соединения. Поддерживается современными версиями nginx и большинством CDN-сервисов.

9. Какие плагины действительно помогают

Вот проверенный набор инструментов, каждый из которых решает конкретную задачу:

Плагин Категория Бесплатный Примечание
W3 Total Cache Кеширование Да Поддерживает APCu, Redis, Memcached
LiteSpeed Cache Кеширование Да Лучший выбор для LiteSpeed-серверов
Smush Оптимизация изображений Да Автоматическая компрессия и WebP
Imagify Оптимизация изображений Частично Поддерживает WebP и AVIF
Asset CleanUp Управление скриптами Да Отключает лишние CSS/JS по URL
Query Monitor Диагностика Да Анализ SQL-запросов и хуков
Autoptimize Минификация CSS/JS Да Конкатенация и defer скриптов
Disable Emojis Удаление лишнего Да Убирает emoji-скрипт WordPress
Внимание. Никогда не устанавливайте одновременно два кеширующих плагина — конфликты кешей приводят к непредсказуемому поведению сайта. Выберите один и настройте его полноценно.

Итог

Ускорение WordPress — это последовательная работа, требующая внимания и времени. Начинайте с измерений: PageSpeed Insights покажет, где именно проблема. Затем двигайтесь по приоритетам: кеширование и OPcache дадут значительный эффект при минимальных усилиях, изображения — второй по значимости резерв, фронтенд и база данных — в завершение.
Большинство сайтов можно довести до оценки 85–95 в PageSpeed без каких-либо изменений в коде — только за счёт правильных настроек.

Прокрутить вверх