Как ускорить WordPress на VPS: Nginx, PHP‑FPM, Redis, кеш и CDN

Валерий Волков

Время прочтения 27 минут

Ускорение WordPress на VPS нужно начинать не с установки очередного кеш-плагина и не с апгрейда тарифа, а с диагностики. Один сайт тормозит из-за слабого CPU, другой — из-за медленных SQL-запросов, третий — из-за тяжёлой темы, огромных изображений или внешних скриптов.

Правильный порядок оптимизации выглядит так:

  1. Замерить TTFB, Core Web Vitals и скорость ключевых страниц.
  2. Проверить CPU, RAM, диск, PHP-FPM, MySQL и логи.
  3. Включить page cache для публичных страниц.
  4. Проверить и настроить OPcache.
  5. Подключить Redis object cache, если сайт активно обращается к базе.
  6. Настроить PHP-FPM под реальный объём RAM.
  7. Найти slow queries и тяжёлые плагины.
  8. Почистить лишние autoload-данные в базе WordPress.
  9. Оптимизировать изображения, CSS, JavaScript и внешние скрипты.
  10. Подключить CDN для статики и, при необходимости, HTML-кеша.

TTFB показывает, как быстро сервер начинает отвечать. Если он высокий даже для простой страницы, сначала нужно смотреть VPS, PHP, базу данных и кеш. Если TTFB нормальный, но страница всё равно медленно прогружается, проблема чаще в изображениях, JavaScript, CSS, шрифтах или сторонних виджетах.

Page cache обычно даёт самый быстрый эффект для блога, корпоративного сайта и новостника. Он позволяет отдавать готовую HTML-страницу без повторного запуска WordPress. OPcache ускоряет выполнение PHP, а Redis уменьшает количество повторных запросов к базе данных.

CDN помогает снизить задержку и нагрузку на VPS, особенно если у сайта аудитория из разных регионов или много изображений. Но CDN не исправит медленную базу, перегруженный PHP-FPM или конфликтующие плагины.

Главные ошибки ускорения WordPress — ставить несколько кеш-плагинов одновременно, начинать с минификации CSS до проверки сервера, игнорировать slow queries и пытаться лечить любую проблему увеличением тарифа.

Апгрейд VPS нужен, когда сайт уже оптимизирован, но CPU, RAM, диск или база регулярно работают на пределе. Если же тормозит один плагин, autoload в базе или неоптимизированные изображения, более дорогой тариф только временно замаскирует проблему.

Почему WordPress тормозит на VPS

Сервер и нехватка ресурсов

WordPress может тормозить из-за самого VPS: слабого CPU, нехватки RAM, медленного диска или перегруженной сети. В этом случае проблема проявляется не только на одной странице, а почти на всём сайте.

Типичные признаки — высокий TTFB, медленная админка, ошибки 502 или 503, активное использование swap и задержки при выполнении фоновых задач.

Особенно часто нехватка ресурсов заметна во время обновлений, создания бэкапа, импорта товаров, очистки кеша или резкого роста трафика. В обычный момент сайт может работать приемлемо, а при пике быстро упираться в CPU или память.

Но увеличивать тариф стоит не сразу. Сначала нужно проверить, не создают ли лишнюю нагрузку база данных, PHP-процессы или отдельные плагины.

Медленная база данных

WordPress активно использует MySQL или MariaDB: хранит записи, страницы, настройки, пользователей, товары, заказы, сессии и данные плагинов. Чем больше таблицы и чем тяжелее запросы, тем сильнее база влияет на скорость сайта.

Проблемы часто возникают из-за большого количества ревизий, временных записей, старых данных плагинов, неоптимизированных таблиц и слишком большого объёма autoload-опций.

Если база отвечает медленно, page cache может скрыть проблему на публичных страницах, но админка, поиск, WooCommerce, личный кабинет и фоновые задачи всё равно будут тормозить.

Для диагностики нужно смотреть slow queries, нагрузку MySQL, размер таблиц и запросы, которые выполняют плагины. Если база регулярно становится узким местом, следующим кандидатом на проверку будет PHP-FPM.

PHP-FPM и очередь запросов

PHP-FPM отвечает за выполнение PHP-кода WordPress. Каждый динамический запрос занимает отдельный процесс на время обработки страницы.

Если процессов слишком мало, запросы начинают ждать в очереди. Если их слишком много, сервер может быстро израсходовать RAM. Поэтому настройка PHP-FPM должна соответствовать реальному объёму памяти и среднему потреблению одного процесса.

Проблема часто проявляется так: статические файлы отдаются быстро, но страницы WordPress открываются медленно или периодически возвращают 502 Bad Gateway.

OPcache помогает ускорить выполнение PHP, но не исправляет плохо написанный код, тяжёлые плагины и перегруженную базу. Поэтому после проверки PHP-FPM нужно смотреть, что именно выполняет WordPress при генерации страницы.

Тяжёлые плагины и тема

Тема и плагины могут создавать больше нагрузки, чем сам WordPress. Особенно это касается конструкторов страниц, WooCommerce, фильтров товаров, статистики, безопасности, резервного копирования, мультиязычности и сложных блоков рекомендаций.

Проблема не всегда в количестве расширений. Один тяжёлый плагин может создавать больше SQL-запросов и потреблять больше памяти, чем несколько простых.

Тяжёлая тема также влияет на скорость: она может подключать лишние стили, скрипты, шрифты, виджеты и динамические блоки. В админке это проявляется как медленное редактирование страниц, а на фронтенде — как долгий рендер и плохие Core Web Vitals.

После серверной и backend-диагностики нужно проверить фронтенд: изображения, шрифты, JavaScript и внешние сервисы.

Картинки, шрифты и внешние скрипты

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

В таком случае TTFB может быть нормальным, но пользователь всё равно видит медленную загрузку, поздний рендер и скачки layout. Это уже не столько проблема сервера, сколько проблема фронтенда.

Частые причины:

  • Изображения без сжатия и правильных размеров;
  • Отсутствие lazy loading;
  • Тяжёлые web fonts;
  • Блокирующий JavaScript;
  • Лишние CSS-файлы;
  • Сторонние скрипты аналитики, рекламы и чатов;
  • Слишком много запросов на одну страницу.

Оптимизация CSS и JavaScript важна, но начинать с неё до проверки сервера не стоит. Если PHP и база отвечают медленно, минификация стилей не устранит высокий TTFB.

Остаётся ещё один слой, который влияет на скорость до загрузки самой страницы, — DNS, CDN и сетевой маршрут.

DNS, CDN и сетевые задержки

Иногда сайт тормозит не из-за WordPress, а из-за расстояния между пользователем и сервером, медленного DNS, неправильной настройки CDN или перегруженного внешнего сервиса.

Если аудитория находится в разных странах, а VPS расположен в одном регионе, задержка может быть заметной даже при хорошем сервере. CDN помогает отдать изображения, стили, скрипты и иногда HTML ближе к пользователю.

Но CDN нужно настраивать аккуратно. Неправильные правила кеширования могут отдавать устаревшие страницы, ломать авторизацию, мешать WooCommerce или скрывать реальные ошибки origin-сервера.

DNS тоже влияет на первый контакт с сайтом. Медленный или нестабильный DNS-провайдер увеличивает время до начала подключения, особенно для новых посетителей.

Поэтому диагностику WordPress нужно вести слоями: сервер, PHP, база, плагины, фронтенд и сеть. Дальше удобно собрать эти причины в диагностическую карту и понять, какие симптомы на что указывают.

Диагностическая карта: где искать причину

Перед оптимизацией нужно понять, на каком уровне возникает задержка. Один и тот же симптом может быть связан с сервером, PHP, базой данных, фронтендом или внешними сервисами. 

Симптом Возможная причина Что проверить 
Высокий TTFB VPS, PHP-FPM, база, отсутствие page cache CPU, RAM, логи, кеш, slow queries 
Долгая отрисовка страницы Тема, CSS, JavaScript, изображения Core Web Vitals, waterfall, размер ресурсов 
Медленная админка PHP, база, плагины, autoload PHP-FPM, MySQL, Query Monitor 
Ошибки 502 и 503PHP-FPM, нехватка RAM, перегрузка сервера Логи Nginx/PHP-FPM, память, очередь процессов 
Быстрая HTML-страница, но плохой UX Фронтенд и внешние скрипты JS, шрифты, реклама, чаты, аналитика 
Разная скорость в регионах Сеть, DNS, отсутствие CDN DNS, CDN, география аудитории 

Диагностику лучше вести от сервера к браузеру: сначала TTFB и backend, затем рендер, изображения, CSS, JavaScript и внешние скрипты. 

Высокий TTFB

TTFB (Time to First Byte) показывает, сколько времени проходит до первого байта ответа от сервера. Если он высокий, браузер ещё даже не начал полноценно загружать страницу, а пользователь уже ждёт.

Чаще всего высокий TTFB указывает на проблемы в backend-части: слабый VPS, перегруженный PHP-FPM, медленную базу данных, отсутствие page cache или тяжёлые плагины.

Для публичных страниц WordPress хороший page cache обычно резко снижает TTFB, потому что сервер отдаёт готовый HTML без запуска ядра, темы и плагинов.

Если page cache включён, но TTFB всё равно высокий, нужно проверить, действительно ли страница попадает в кеш, не мешают ли cookies, авторизация, параметры URL или правила исключений.

Когда сервер начинает отвечать быстро, но страница всё равно визуально загружается медленно, причина часто находится уже на стороне фронтенда.

Медленный рендер страницы

Медленный рендер означает, что HTML пришёл, но пользователь долго не видит удобную и стабильную страницу. Это влияет на Core Web Vitals: LCP, CLS и INP.

Причины обычно связаны с тяжёлыми изображениями, блокирующими CSS и JavaScript, web-шрифтами, рекламой, виджетами, чатами и аналитикой.

Например, VPS может быстро отдать HTML, но первый крупный блок страницы появится поздно из-за изображения на несколько мегабайт или скрипта, который блокирует отрисовку.

В этом случае увеличение тарифа почти не поможет. Нужно оптимизировать изображения, порядок загрузки ресурсов, критический CSS, шрифты и сторонние скрипты.

Если же медленно работает не только фронтенд, но и админка, поиск или карточки товаров, стоит отдельно проверить запросы к базе.

Долгие запросы к базе

Медленные SQL-запросы особенно заметны в WooCommerce, каталогах, фильтрах, поиске, личных кабинетах и административной панели.

Проблема может быть в большом объёме данных, отсутствии индексов, тяжёлом плагине, разросшихся таблицах или слишком большом количестве autoload-опций.

Page cache может скрыть медленную базу на обычных страницах, но не устранит её в динамических сценариях. Корзина, оформление заказа, админка и фоновые задачи всё равно будут обращаться к MySQL или MariaDB.

Для диагностики полезно смотреть slow query log, отчёты плагинов профилирования и размер таблицы wp_options. Если autoload-данные слишком велики, WordPress загружает лишнее при каждом запросе.

Но иногда база работает нормально, а очередь возникает уже на уровне PHP.

Перегруженный PHP

PHP-FPM может стать узким местом, если процессов слишком мало, каждый процесс потребляет много памяти или запросы выполняются слишком долго.

При нехватке процессов пользователи ждут свободный PHP-воркер. При слишком большом пуле сервер может израсходовать RAM и начать использовать swap.

Типичные признаки — периодические 502 Bad Gateway, медленная админка, задержки при сохранении страниц и рост времени ответа при одновременных посещениях.

OPcache снижает нагрузку на компиляцию PHP-файлов, но не исправляет медленные плагины и не уменьшает бесконечно время выполнения тяжёлого запроса.

Настройки PHP-FPM нужно подбирать по фактическому потреблению памяти, а не копировать из универсальной инструкции. После этого можно переходить к проблемам, которые возникают уже в браузере пользователя.

Проблемы на стороне браузера

Если сервер отвечает быстро, а страница всё равно кажется медленной, нужно смотреть waterfall в инструментах разработчика или сервисах проверки производительности.

Часто виноваты не WordPress и не VPS, а фронтенд:

  • Слишком большие изображения;
  • Лишний JavaScript;
  • Тяжёлые шрифты;
  • Сторонняя реклама;
  • Карты;
  • Виджеты соцсетей;
  • Онлайн-чаты;
  • Аналитика и пиксели.

Такие ресурсы могут загружаться с внешних доменов и зависеть от скорости чужих серверов. Поэтому сайт может быть быстрым по TTFB, но медленным по LCP или INP.

CDN, lazy loading и оптимизация изображений помогают, но сначала нужно понять, какие элементы реально тормозят страницу. Иначе можно потратить время на минификацию CSS, когда основная задержка создаётся рекламным скриптом или огромным hero-изображением.

После диагностической карты можно переходить к практическому порядку оптимизации: сначала замеры и серверные метрики, затем кеш, PHP, база, изображения и CDN.

С чего начать оптимизацию WordPress

Замерить TTFB и Core Web Vitals

Первый шаг — проверить скорость не одной главной страницы, а нескольких типовых URL:

  • Главная страница;
  • Популярная статья или лендинг;
  • Страница категории;
  • Карточка товара;
  • Корзина или личный кабинет, если есть WooCommerce;
  • Админка, если проблема заметна внутри панели.

TTFB показывает, насколько быстро сервер начинает отдавать ответ. Если TTFB высокий, сначала нужно смотреть VPS, PHP, MySQL, кеш и плагины. Если TTFB нормальный, но страница всё равно медленно становится удобной для пользователя, проблема чаще в изображениях, CSS, JavaScript, шрифтах и внешних скриптах.

Core Web Vitals - метрики оценки пользовательского опыта от Google - помогают оценить уже пользовательское восприятие скорости. LCP (Largest Contentful Paint) показывает, как быстро появляется главный контент, CLS (Cumulative Layout Shift) — насколько страница прыгает при загрузке, INP (Interaction to Next Paint) — как быстро сайт реагирует на действия пользователя.

Важно делать замеры несколько раз и в разных условиях. Один тест может попасть в холодный кеш, временную сетевую задержку или фоновую задачу на сервере.

После внешних замеров нужно перейти к самому VPS и проверить, хватает ли ему ресурсов.

Проверить CPU, RAM, диск и логи

Если сервер перегружен, WordPress будет тормозить даже при аккуратной теме и нормальных изображениях. Поэтому нужно посмотреть, что происходит с VPS во время обычной работы и в момент замедления.

В первую очередь проверяют:

  • Загрузку CPU;
  • Свободную RAM;
  • Использование swap;
  • Свободное место на диске;
  • Дисковый ввод-вывод;
  • Нагрузку MySQL или MariaDB;
  • Состояние PHP-FPM;
  • Ошибки Nginx и PHP;
  • Медленные SQL-запросы.

Особенно важен swap. Если VPS регулярно использует swap, значит оперативной памяти не хватает, а часть данных переносится на диск. Для WordPress это почти всегда приводит к заметным задержкам.

Логи помогают отличить нехватку ресурсов от ошибок конфигурации. Например, 502 Bad Gateway может указывать на проблему с PHP-FPM, а повторяющиеся PHP Fatal error — на конфликт плагина, нехватку memory limit или несовместимость версии PHP.

Если серверные метрики в норме, не стоит сразу увеличивать тариф. Возможно, тормозит не backend, а сама страница в браузере.

Разделить серверные и фронтенд-проблемы

Главная ошибка при ускорении WordPress — смешивать разные типы задержек. Высокий TTFB, медленный LCP и плохой INP могут ощущаться пользователем одинаково, но лечатся по-разному.

Если медленно приходит первый HTML-ответ, нужно разбираться с сервером: page cache, OPcache, PHP-FPM, Redis, MySQL, slow queries и тяжёлые плагины.

Если HTML приходит быстро, но страница долго отрисовывается, нужно смотреть фронтенд: изображения, CSS, JavaScript, шрифты, рекламу, карты, виджеты и сторонние скрипты.

Если сайт быстро работает для гостей, но тормозит в админке или личном кабинете, проблема может быть в динамических запросах, базе данных, Redis object cache, PHP-FPM или конкретных плагинах.

Такое разделение экономит время. Нет смысла минифицировать CSS, если сервер отвечает две секунды. И наоборот: апгрейд VPS не исправит огромные изображения, блокирующие скрипты и нестабильную вёрстку.

После базовой диагностики можно переходить к средству, дающему самый быстрый серверный эффект — page cache и OPcache.

Page cache и OPcache

Page cache для готовых HTML-страниц

Page cache сохраняет готовую HTML-версию страницы и отдаёт её посетителю без повторного запуска WordPress. Серверу не нужно каждый раз выполнять PHP-код, обращаться к базе данных, собирать тему и загружать плагины.

Для блога, корпоративного сайта, лендингов и новостных страниц это обычно самый быстрый способ снизить TTFB и нагрузку на VPS.

Page cache особенно полезен, когда большая часть посетителей открывает одинаковые публичные страницы. В таком сценарии один раз сгенерированная HTML-страница может обслужить сотни и тысячи запросов.

Но кешировать можно не всё. Корзина, оформление заказа, личный кабинет, страницы с персональными данными и часть AJAX-запросов должны оставаться динамическими. Если настроить кеширование слишком агрессивно, пользователь может увидеть чужую корзину, устаревшую цену или некорректный статус заказа.

Поэтому page cache нужно включать вместе с правильными исключениями. Для WooCommerce, личных кабинетов и сайтов с авторизацией это особенно важно.

Если page cache снижает число запусков WordPress, то OPcache ускоряет те случаи, когда PHP всё-таки должен выполниться.

OPcache для ускорения PHP

WordPress состоит из большого количества PHP-файлов. Без OPcache сервер при каждом запросе читает эти файлы, компилирует их и только потом выполняет код.

OPcache сохраняет скомпилированный PHP-код в памяти. Благодаря этому динамические страницы, админка, фоновые задачи и некешируемые запросы обрабатываются быстрее.

OPcache не заменяет page cache. Он не отдаёт готовый HTML и не убирает обращения к базе данных. Его задача — ускорить выполнение PHP-кода там, где WordPress всё равно запускается.

На VPS для WordPress OPcache обычно стоит включать почти всегда. Важно только выделить ему достаточно памяти и следить, чтобы кеш не переполнялся слишком быстро.

Если OPcache включён, но сайт всё равно медленный, причину нужно искать дальше: в PHP-FPM, базе данных, плагинах, теме или фронтенде.

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

Почему нельзя ставить несколько кеш-плагинов одновременно

Несколько кеш-плагинов не ускоряют WordPress пропорционально их количеству. На практике они часто конфликтуют: каждый пытается управлять HTML-кешем, минификацией, preload, lazy loading, заголовками кеширования и очисткой файлов.

В результате сайт может начать отдавать устаревшие страницы, ломать стили, неправильно очищать кеш после обновлений или кешировать то, что должно оставаться динамическим.

Особенно опасны конфликты на WooCommerce. Если разные плагины по-разному обрабатывают корзину, cookies и страницы оформления заказа, можно получить ошибки с товарами, ценами и пользовательскими сессиями.

Лучше выбрать один основной инструмент для page cache и дополнить его отдельными системными механизмами: OPcache на уровне PHP, Redis для object cache, CDN для статики и корректные настройки Nginx.

Если после включения кеша сайт работает нестабильно, нужно не добавлять второй плагин, а проверить правила исключений, очистку кеша, cookies, мобильную версию, авторизацию и работу форм.

После page cache и OPcache логично перейти к Redis и базе данных, потому что именно там часто остаётся нагрузка на динамических страницах.

Redis object cache и база данных

Когда Redis действительно нужен

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

Redis особенно полезен для:

  • WooCommerce;
  • Личных кабинетов;
  • Крупных каталогов;
  • Новостных сайтов;
  • Мультиязычных проектов;
  • Сайтов с фильтрами и поиском;
  • Проектов с большим количеством авторизованных пользователей.

На небольшом блоге с хорошим page cache эффект может быть слабее. Если почти все страницы отдаются как готовый HTML, база и так получает мало запросов от обычных посетителей.

Redis не стоит включать вслепую на VPS с маленьким объёмом RAM. Он хранит данные в памяти, поэтому при нехватке ресурсов может конкурировать с PHP-FPM и MySQL.

После подключения Redis нужно проверить, что object cache действительно активен, а сайт не начал чаще упираться в память. Если Redis работает корректно, он снижает часть повторных обращений к базе, но не исправляет медленные SQL-запросы.

Slow queries и нагрузка на MySQL

Slow queries — это SQL-запросы, которые выполняются слишком долго. Они могут появляться из-за тяжёлых плагинов, фильтров, поиска, больших таблиц, отсутствия индексов или неудачной логики темы.

Особенно часто проблемы возникают на сайтах с WooCommerce, каталогами, импортами, отчётами, статистикой и сложными блоками рекомендаций.

Page cache может скрыть медленные запросы на публичных страницах, но в админке, корзине, оформлении заказа и личном кабинете они всё равно будут выполняться.

Для диагностики полезно включить slow query log, посмотреть самые тяжёлые запросы и сопоставить их с конкретными плагинами или страницами. Иногда один виджет, фильтр или блок “похожие товары” создаёт десятки лишних обращений к базе.

Лечить slow queries увеличением тарифа — плохая стратегия. Более мощный VPS может временно сгладить проблему, но если запросы неэффективны, они снова станут узким местом при росте данных и трафика.

Отдельно стоит проверить таблицу wp_options, потому что именно там часто накапливаются лишние autoload-данные.

Очистка autoload в базе WordPress

В WordPress часть настроек загружается автоматически при каждом запросе. Эти данные хранятся в таблице wp_options и помечаются как autoload.

Если autoload-данных становится слишком много, WordPress каждый раз подтягивает лишний объём информации, даже когда конкретной странице эти настройки не нужны. Это увеличивает время ответа и нагрузку на базу.

Разрастание autoload часто связано с плагинами, которые сохраняют временные данные, настройки, логи или кеш в wp_options, а после удаления не очищают их полностью.

Проверять autoload нужно аккуратно. Нельзя просто удалить все крупные записи: среди них могут быть важные настройки темы, плагинов, WooCommerce или безопасности.

Порядок такой:

  1. Сделать свежий бэкап базы.
  2. Найти самые крупные autoload-записи.
  3. Понять, какому плагину или функции они принадлежат.
  4. Удалять только явно лишние и устаревшие данные.
  5. Проверить сайт, админку, корзину, формы и интеграции.

Если база стала легче, а slow queries устранены, динамические страницы начинают работать стабильнее. После этого можно переходить к PHP-FPM и Nginx: они определяют, как сервер обрабатывает PHP-запросы и отдаёт статические файлы.

Настройка PHP-FPM и Nginx

Процессы PHP-FPM и лимиты памяти

PHP-FPM управляет процессами, которые выполняют PHP-код WordPress. Каждый динамический запрос занимает отдельный PHP-процесс: пока он обрабатывает страницу, другой запрос должен получить другой свободный процесс или ждать в очереди.

Если процессов слишком мало, сайт начинает тормозить при одновременных посещениях. Если процессов слишком много, VPS может быстро израсходовать RAM и уйти в swap.

Поэтому настройки PHP-FPM нельзя выбирать случайно. Нужно учитывать:

  • Общий объём RAM на VPS;
  • Сколько памяти потребляет один PHP-процесс;
  • Сколько памяти нужно MySQL, Redis, Nginx и системе;
  • Есть ли WooCommerce, Elementor, WPBakery или тяжёлые плагины;
  • Сколько динамических запросов сайт получает одновременно.

Например, если каждый PHP-процесс потребляет много памяти, большое значение pm.max_children не ускорит сайт, а приведёт к нехватке RAM. В итоге сервер начнёт работать медленнее, чем при более скромном, но стабильном пуле процессов.

Также важно проверить memory_limit, max_execution_time и настройки загрузки файлов. Слишком низкие лимиты ломают тяжёлые операции, а слишком высокие могут позволить одному запросу съесть слишком много ресурсов.

После настройки PHP-FPM нужно убедиться, что Nginx не заставляет WordPress выполнять лишнюю работу там, где можно отдать готовый кеш или статический файл.

FastCGI cache и отдача статических файлов

Nginx может не только передавать PHP-запросы в PHP-FPM, но и эффективно отдавать статические файлы: изображения, CSS, JavaScript, шрифты и документы. Такие файлы не должны проходить через WordPress.

Если статика отдаётся напрямую через Nginx, VPS тратит меньше ресурсов, а страницы загружаются быстрее.

Для HTML-страниц можно использовать FastCGI cache. В этом случае Nginx сохраняет готовый ответ от PHP-FPM и при следующих запросах отдаёт его без повторного запуска WordPress.

FastCGI cache особенно полезен для публичных страниц: статей, категорий, лендингов, новостей и документации. Он может снижать TTFB даже сильнее, чем плагин кеширования, потому что работает на уровне веб-сервера.

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

Также нужно продумать очистку кеша после обновления записей, изменения цен, публикации новых материалов и правок в шаблонах. Иначе пользователи будут видеть устаревшую версию страницы.

Когда PHP и кеш настроены, остаётся оптимизировать передачу данных от сервера к браузеру.

Gzip, Brotli и HTTP/2 или HTTP/3

Gzip и Brotli сжимают текстовые ресурсы перед отправкой в браузер. Это уменьшает размер HTML, CSS, JavaScript, SVG и JSON-файлов.

Brotli обычно даёт лучшее сжатие, особенно для текстовых файлов, но поддержка зависит от конфигурации сервера, CDN и браузера. Gzip остаётся базовым и широко совместимым вариантом.

Сжимать уже сжатые форматы вроде JPEG, PNG, WebP, AVIF, ZIP или MP4 обычно не имеет смысла. Это почти не уменьшит размер, но добавит лишнюю работу серверу.

HTTP/2 позволяет эффективнее передавать много ресурсов по одному соединению. Это полезно для WordPress, где страница часто загружает стили, скрипты, изображения и шрифты.

HTTP/3 может дополнительно снизить задержки в нестабильных сетях, но его польза зависит от поддержки у провайдера, CDN и аудитории сайта.

Эти настройки помогают ускорить доставку ресурсов, но они не заменяют оптимизацию изображений, CSS и JavaScript. Если страница весит слишком много или загружает десятки лишних скриптов, протокол передачи не решит проблему полностью.

Оптимизация изображений, CSS и JavaScript

Даже если VPS быстро отдаёт HTML, страница WordPress может оставаться медленной из-за тяжёлого фронтенда. Крупные изображения, лишние стили, блокирующий JavaScript, web-шрифты и внешние скрипты напрямую влияют на Core Web Vitals.

Поэтому после настройки кеша, PHP-FPM и базы нужно проверить, что именно загружается в браузере пользователя.

Сжатие и современные форматы изображений

Изображения часто дают основной вес страницы. Особенно это заметно на главной, лендингах, карточках товаров, портфолио и новостных материалах с большим количеством иллюстраций.

Первый шаг — не просто сжать картинки, а привести их к реальному размеру отображения. Если блок на сайте показывает изображение шириной 800 пикселей, нет смысла загружать файл шириной 3000 пикселей.

Для новых изображений стоит использовать современные форматы: WebP или AVIF. Они обычно дают меньший размер файла при сопоставимом качестве. При этом желательно сохранить fallback для старых браузеров, если аудитория сайта этого требует.

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

После оптимизации формата и веса нужно убедиться, что изображения загружаются в правильный момент.

Lazy loading и размеры картинок

Lazy loading откладывает загрузку изображений, которые находятся ниже первого экрана. Благодаря этому браузер быстрее получает ресурсы, необходимые для начального отображения страницы.

Но lazy loading нельзя включать бездумно для всех изображений. Главное изображение первого экрана, логотип и ключевой hero-блок лучше загружать сразу, иначе может ухудшиться LCP.

Также важно указывать размеры изображений в разметке. Если браузер заранее знает ширину и высоту блока, страница меньше “прыгает” во время загрузки. Это помогает снизить CLS.

Для адаптивной вёрстки полезны разные версии изображений под разные экраны. Мобильному пользователю не нужно загружать тот же файл, который предназначен для большого desktop-монитора.

Когда изображения приведены в порядок, стоит перейти к CSS, JavaScript и внешним скриптам. Часто именно они задерживают отрисовку даже после сжатия картинок.

CSS, JavaScript и внешние скрипты

CSS и JavaScript могут блокировать отображение страницы. Если браузер вынужден сначала загрузить и обработать большой набор стилей и скриптов, пользователь позже увидит основной контент.

Оптимизация обычно включает удаление лишнего CSS, отложенную загрузку некритичного JavaScript, уменьшение числа запросов и проверку скриптов, которые подключают плагины и тема.

Но начинать с минификации CSS до проверки сервера не стоит. Если TTFB высокий из-за PHP, базы или отсутствия page cache, сжатие стилей даст ограниченный эффект.

Отдельно нужно проверить внешние скрипты:

  • Аналитика;
  • Рекламные пиксели;
  • Онлайн-чаты;
  • Карты;
  • Виджеты соцсетей;
  • Формы сторонних сервисов;
  • A/B-тесты;
  • Антифрод и маркетинговые трекеры.

Такие скрипты загружаются с чужих серверов, поэтому владелец сайта не всегда контролирует их скорость. Один медленный внешний сервис может ухудшить рендер и реакцию страницы на действия пользователя.

Лучше оставить только действительно нужные внешние интеграции, а некритичные скрипты загружать отложенно или только на тех страницах, где они нужны.

После оптимизации изображений, CSS и JavaScript можно подключать CDN: он поможет быстрее доставлять статику пользователям и снизит нагрузку на VPS.

CDN для WordPress

Когда CDN ускоряет сайт

CDN ускоряет WordPress, когда пользователи находятся далеко от VPS или сайт отдаёт много статических файлов: изображений, CSS, JavaScript, шрифтов и документов.

Без CDN каждый посетитель обращается к origin-серверу. Если VPS расположен в одном регионе, пользователи из других стран могут получать страницу с большей задержкой.

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

CDN особенно полезен для:

  • Сайтов с аудиторией из разных регионов;
  • Медиа-сайтов и блогов с большим количеством изображений;
  • Интернет-магазинов с каталогом товаров;
  • Новостных проектов с резкими всплесками трафика;
  • Лендингов, где важны LCP и быстрая загрузка первого экрана.

Но CDN не исправляет медленный PHP, тяжёлые SQL-запросы и проблемы с PHP-FPM. Если origin-сервер долго генерирует HTML, CDN поможет только после правильной настройки кеширования.

Поэтому важно понимать, какие ресурсы можно безопасно отдавать через CDN, а какие должны оставаться динамическими.

Что отдавать через CDN

В первую очередь через CDN стоит отдавать статические ресурсы. Они редко меняются и одинаковы для всех пользователей.

Обычно через CDN отдают:

  • Изображения;
  • CSS-файлы;
  • JavaScript;
  • Шрифты;
  • SVG;
  • PDF и другие документы;
  • Видео и медиафайлы, если это поддерживает инфраструктура.

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

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

На динамических сайтах нужно заранее определить исключения: авторизация, корзина, оформление заказа, личный кабинет, персональные страницы, формы и AJAX-запросы.

Если CDN настроен неправильно, он может не ускорить сайт, а добавить новый слой проблем: устаревший контент, сломанные формы, некорректные cookies и ошибки с авторизацией.

Как не сломать кеширование динамических страниц

Главное правило: нельзя кешировать персональные и изменяемые страницы как общий HTML для всех пользователей.

В WordPress особенно аккуратно нужно работать с WooCommerce, личными кабинетами, закрытыми разделами, формами, подписками и страницами с пользовательскими данными.

Обычно из CDN-кеша исключают:

  • /wp-admin/;
  • /wp-login.php;
  • Корзину;
  • Оформление заказа;
  • Личный кабинет;
  • Страницы с nonce и формами;
  • AJAX-запросы;
  • Запросы авторизованных пользователей;
  • Страницы с cookies корзины или сессии.

Также важно настроить очистку кеша после изменений. Если опубликована новая статья, изменена цена товара или обновлён шаблон, CDN должен получить актуальную версию страницы.

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

CDN лучше подключать после базовой оптимизации WordPress. Тогда он усиливает уже настроенный кеш, снижает нагрузку на VPS и ускоряет доставку ресурсов, а не маскирует проблемы PHP, базы и плагинов.

Порядок оптимизации WordPress на VPS

Оптимизировать WordPress лучше по порядку: от диагностики к серверу, затем к базе, кешу, фронтенду и CDN. Если менять всё сразу, будет сложно понять, что именно дало результат, а что сломало сайт.

Последовательность выглядит так:

  1. Замерить текущую скорость. Проверить TTFB, LCP, CLS, INP и время загрузки ключевых страниц. Отдельно посмотреть главную, статьи, категории, карточки товаров, корзину, личный кабинет и админку.
  2. Проверить ресурсы VPS. Оценить CPU, RAM, swap, диск, I/O, логи Nginx, PHP-FPM и MySQL. Если сервер уже на этом этапе работает на пределе, оптимизацию нужно начинать с инфраструктуры и PHP-настроек.
  3. Включить page cache. Для публичных страниц это обычно самый быстрый способ снизить TTFB. Важно сразу настроить исключения для авторизации, корзины, оформления заказа, личного кабинета и форм.
  4. Проверить OPcache. OPcache должен быть включён и иметь достаточно памяти. Он ускоряет выполнение PHP-кода там, где WordPress всё равно запускается.
  5. Настроить PHP-FPM. Нужно подобрать количество процессов под реальный объём RAM. Слишком маленький пул создаёт очередь, слишком большой — приводит к нехватке памяти и swap.
  6. Проверить базу данных. Включить или изучить slow query log, найти тяжёлые запросы, проверить таблицы, размер wp_options и объём autoload-данных.
  7. Подключить Redis object cache, если он нужен. Redis особенно полезен для WooCommerce, личных кабинетов, каталогов, поиска и сайтов с большим количеством динамических запросов. На небольшом блоге с хорошим page cache эффект может быть минимальным.
  8. Очистить лишние данные в базе. Удалить старые ревизии, временные записи, мусор после плагинов и лишние autoload-опции. Перед очисткой обязательно сделать бэкап.
  9. Оптимизировать изображения. Привести картинки к реальным размерам отображения, сжать их, использовать WebP или AVIF, настроить lazy loading и проверить LCP-изображение первого экрана.
  10. Разобрать CSS, JavaScript и внешние скрипты. Убрать лишнее, отложить некритичные скрипты, проверить шрифты, аналитику, рекламу, карты, чаты и сторонние виджеты.
  11. Подключить CDN. Сначала отдавать через CDN статику: изображения, CSS, JavaScript, шрифты и документы. HTML-кеш через CDN включать только после настройки исключений для динамических страниц.
  12. Повторить замеры. После каждого крупного изменения нужно снова проверять TTFB, Core Web Vitals, логи и поведение сайта. Иначе невозможно понять, какая настройка реально ускорила WordPress.

Главное — не начинать с косметических правок. Если сервер отвечает две секунды, минификация CSS не решит проблему. Если TTFB нормальный, но LCP плохой, апгрейд VPS не исправит тяжёлое изображение первого экрана.

Оптимизация WordPress работает лучше всего, когда каждое действие закрывает конкретное узкое место.

Типовые ошибки ускорения

Ускорение WordPress часто превращается в хаотичный набор действий: поставить кеш-плагин, включить минификацию, увеличить тариф, отключить пару скриптов и надеяться, что сайт станет быстрее.

Проблема в том, что такие действия могут не устранить причину тормозов. Иногда они даже усложняют диагностику: сайт начинает вести себя нестабильно, а понять, какая настройка виновата, становится сложнее.

Ставить пять кеш-плагинов одновременно

Несколько кеш-плагинов не складывают эффект. Если один плагин уже управляет page cache, минификацией, preload и lazy loading, второй может начать делать то же самое поверх него.

В результате появляются конфликты: стили ломаются, JavaScript выполняется не в том порядке, кеш очищается непредсказуемо, а динамические страницы начинают отдавать устаревшие данные.

Особенно опасно это для WooCommerce. Корзина, оформление заказа и личный кабинет требуют аккуратных исключений. Если разные плагины по-разному работают с cookies и HTML-кешем, можно получить ошибки с товарами, ценами или пользовательскими сессиями.

Лучше выбрать один основной инструмент для page cache и не смешивать несколько решений с одинаковыми функциями. OPcache, Redis, CDN и серверный кеш можно использовать вместе, но у каждого слоя должна быть своя понятная задача.

Оптимизировать CSS до проверки сервера

Минификация CSS, удаление unused CSS и отложенная загрузка JavaScript действительно могут улучшить Core Web Vitals. Но это не первый шаг, если сервер сам отвечает медленно.

Если TTFB составляет несколько секунд, пользователь ждёт ещё до загрузки стилей. В такой ситуации нужно сначала проверить VPS, PHP-FPM, MySQL, page cache, OPcache и slow queries.

Оптимизация CSS имеет смысл, когда сервер уже отдаёт HTML достаточно быстро, но страница долго рендерится в браузере. Тогда можно разбирать критический CSS, порядок загрузки скриптов, шрифты и блокирующие ресурсы.

Иначе получается косметический ремонт поверх серверной проблемы: отчёт может показать небольшое улучшение, но пользователь всё равно будет ждать первый ответ от сайта.

Игнорировать slow queries

Медленные SQL-запросы могут свести на нет часть оптимизаций. Page cache поможет на публичных страницах, но админка, поиск, фильтры, корзина, оформление заказа и личный кабинет всё равно будут обращаться к базе.

Если slow queries не проверять, можно долго менять настройки PHP-FPM, ставить кеш-плагины и увеличивать тариф, хотя реальную задержку создаёт один тяжёлый запрос от плагина или темы.

Особенно внимательно нужно смотреть базу на сайтах с WooCommerce, каталогами, фильтрами, импортами, отчётами и большим количеством записей.

Slow queries нужно связывать с конкретным сценарием: какая страница открывалась, какой плагин выполнял запрос, сколько данных обрабатывалось и повторяется ли проблема под нагрузкой.

Лечить всё увеличением тарифа

Апгрейд VPS иногда действительно нужен. Если сайт оптимизирован, кеш работает, база в порядке, а CPU и RAM всё равно регулярно упираются в предел, переход на более мощный тариф оправдан.

Ошибка начинается там, где тариф увеличивают вместо диагностики. Более дорогой VPS может временно скрыть тяжёлый плагин, раздутый autoload, медленные запросы или огромные изображения, но не устранит их.

Через некоторое время проблема вернётся: данных станет больше, трафик вырастет, плагины добавят новые задачи, и сайт снова начнёт тормозить.

Правильный подход — сначала найти узкое место, устранить очевидные ошибки и только потом масштабировать ресурсы. Тогда апгрейд становится осознанным шагом, а не способом замаскировать неудачную настройку WordPress.

Чек-лист ускорения WordPress 

Перед оптимизацией:

  • Замерьте TTFB на главной, статьях, категориях, карточках товаров и динамических страницах;
  • Проверьте Core Web Vitals: LCP, CLS и INP;
  • Посмотрите CPU, RAM, swap, диск и I/O на VPS;
  • Проверьте логи Nginx, PHP-FPM и MySQL;
  • Отделите серверные проблемы от фронтенд-проблем.

Для серверной части:

  • Включите page cache для публичных страниц;
  • Настройте исключения для корзины, оформления заказа, личного кабинета и авторизованных пользователей;
  • Проверьте, что OPcache включён и не переполняется;
  • Настройте PHP-FPM по реальному объёму RAM;
  • Проверьте slow queries;
  • Найдите тяжёлые плагины и запросы к базе;
  • Очистите лишние autoload-данные в wp_options;
  • Подключите Redis object cache, если сайт активно использует динамические запросы.

Для фронтенда:

  • Сожмите изображения;
  • Используйте WebP или AVIF;
  • Проверьте размеры картинок под реальные блоки;
  • Настройте lazy loading для изображений ниже первого экрана;
  • Не откладывайте загрузку главного LCP-изображения;
  • Уберите лишний CSS и JavaScript;
  • Проверьте шрифты, рекламу, карты, чаты, аналитику и другие внешние скрипты.

Для CDN:

  • Отдавайте через CDN изображения, CSS, JavaScript, шрифты и документы;
  • Не кешируйте персональные страницы как общий HTML;
  • Настройте очистку кеша после обновления контента;
  • Проверьте сайт как гость, авторизованный пользователь и покупатель с товаром в корзине.

После каждого крупного изменения нужно повторять замеры. Если скорость не изменилась, настройка могла не затрагивать реальное узкое место.

Заключение

Ускорение WordPress на VPS начинается с диагностики. Нельзя заранее сказать, что конкретный сайт тормозит из-за слабого тарифа, тяжёлой темы, базы данных, изображений или внешних скриптов. Сначала нужно измерить TTFB, Core Web Vitals и нагрузку на сервер, а уже потом выбирать способ оптимизации.

Для публичных страниц чаще всего быстрый эффект дают page cache и OPcache. Они снижают количество запусков WordPress и ускоряют выполнение PHP. Для динамических разделов важнее Redis object cache, состояние базы данных, slow queries и настройки PHP-FPM.

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

CDN помогает ускорить доставку ресурсов и снизить нагрузку на VPS, но не заменяет нормальную настройку WordPress. Если origin-сервер медленно генерирует HTML, сначала нужно разобраться с кешем, PHP, базой и плагинами.

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

FAQ

Что сильнее всего ускоряет WordPress?

Чаще всего самый заметный эффект даёт page cache. Он позволяет отдавать готовую HTML-страницу без повторного запуска WordPress, PHP, темы, плагинов и запросов к базе.

Но это работает прежде всего для публичных страниц: статей, лендингов, категорий и обычных информационных разделов.

Для динамических страниц важнее другие меры: OPcache, Redis object cache, настройка PHP-FPM, оптимизация базы данных и устранение slow queries.

Если TTFB высокий, начинать нужно с backend-части. Если TTFB нормальный, но страница всё равно медленно загружается визуально, больше пользы дадут оптимизация изображений, CSS, JavaScript, шрифтов и внешних скриптов.

Нужен ли Redis каждому сайту на WordPress?

Нет, Redis нужен не каждому сайту.

Для небольшого блога или корпоративного сайта с хорошим page cache эффект от Redis может быть минимальным. Если большинство страниц отдаются как готовый HTML, база данных и так получает мало запросов от обычных посетителей.

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

Перед подключением Redis нужно учитывать объём RAM на VPS. Redis хранит данные в памяти, поэтому на слабом сервере он может конкурировать за ресурсы с PHP-FPM и MySQL.

Что важнее — CDN или хороший VPS?

CDN и VPS решают разные задачи.

Хороший VPS нужен, чтобы WordPress быстро генерировал страницы, обрабатывал PHP-запросы, работал с базой данных и выдерживал нагрузку. CDN нужен, чтобы быстрее доставлять ресурсы пользователям и снижать число запросов к origin-серверу.

Если сервер долго генерирует HTML, CDN не исправит причину полностью. Он может ускорить статику, но медленный PHP, slow queries и перегруженный MySQL останутся.

Если же VPS настроен нормально, а аудитория распределена по разным регионам, CDN может заметно улучшить загрузку изображений, CSS, JavaScript, шрифтов и кешируемых HTML-страниц.

Почему сайт медленный даже с кеш-плагином?

Кеш-плагин ускоряет не все сценарии. Он может не работать для авторизованных пользователей, корзины, оформления заказа, личного кабинета, поиска, фильтров, AJAX-запросов и страниц с cookies.

Также кеш может быть настроен неправильно. Например, страница не попадает в кеш, кеш постоянно очищается, есть конфликт с другим плагином или исключения настроены слишком широко.

Ещё одна частая причина — проблема не в HTML-генерации, а во фронтенде. Если страница загружает тяжёлые изображения, блокирующий JavaScript, рекламу, чаты и сторонние виджеты, кеш-плагин не устранит эти задержки.

Поэтому после установки кеша нужно повторно измерить TTFB, проверить попадание страниц в кеш и отдельно посмотреть Core Web Vitals.

Когда нужно увеличивать тариф VPS?

Увеличивать тариф стоит тогда, когда сайт уже оптимизирован, но сервер всё равно регулярно работает на пределе.

Признаки:

  • CPU долго держится под высокой нагрузкой;
  • RAM почти полностью занята;
  • VPS постоянно использует swap;
  • Появляются ошибки 502 или 503;
  • PHP-FPM формирует очередь;
  • MySQL отвечает медленно даже после оптимизации;
  • Бэкапы, импорт или обновления мешают обычной работе сайта.

Если же причина в тяжёлом плагине, slow queries, раздутом autoload, неоптимизированных изображениях или конфликтующих кеш-плагинах, новый тариф только временно замаскирует проблему.

Сначала нужно найти узкое место, затем исправить очевидные ошибки и только после этого масштабировать ресурсы.

Список источников

1. WordPress Advanced Administration Handbook — Cache

2. Make WordPress Hosting Handbook — Performance

3. Google Search Central — Core Web Vitals and Search results

4. Web.dev — Web Vitals

5. Nginx Documentation — gzip module

6. Nginx Documentation — HTTP/2 module

7. Nginx Documentation — Brotli module

Подпишитесь на нашу рассылку и получайте статьи и новости

    Ознакомьтесь с другими нашими материалами