Если WordPress уже упирается не в MySQL, а в PHP-исполнение, OPcache часто дает самый заметный и при этом самый недооцененный эффект. Это не «ускоритель сайта» в вакууме, а кэш байткода PHP: сервер перестает пересобирать одни и те же файлы при каждом запросе. Для обычного сайта это особенно полезно после деплоя, на страницах с большим количеством плагинов и в админке, где PHP-код выполняется постоянно.
Но включить OPcache «на глаз» недостаточно. Если параметры выставлены криво, можно получить странные симптомы: изменения в коде не подхватываются, память заканчивается раньше времени, а после обновлений часть сайта ведет себя непредсказуемо. Ниже — рабочая схема: как диагностировать текущую ситуацию, что именно настраивать и как проверить результат без гаданий.
Когда OPcache действительно нужен
Сначала стоит понять, есть ли у вас вообще проблема на стороне PHP. Если сайт медленный из-за тяжелых запросов к базе, отсутствия page cache или перегруженной темы, OPcache не заменит нормальную оптимизацию. Но если в логах и профилировании видно, что много времени уходит на выполнение PHP-кода, кэш байткода помогает снять лишнюю нагрузку с процессора.
Типичные признаки
- время ответа заметно растет под нагрузкой, хотя база данных не выглядит узким местом;
- на одном и том же сервере разные сайты с похожим трафиком ведут себя по-разному из-за количества PHP-файлов и плагинов;
- после перезапуска PHP-FPM сайт на короткое время работает быстрее, а потом снова «тяжелеет»;
- в админке много экранов с большим количеством PHP-логики: редактор, список записей, настройки плагинов.
Если у вас уже есть полноценный page cache на уровне Nginx, LiteSpeed или плагина, OPcache все равно полезен, но эффект будет заметнее на динамических страницах и в админке. Это разные уровни оптимизации, они не дублируют друг друга.
Диагностика: включен ли OPcache и как он сейчас работает
Проверять лучше в двух местах: на сервере и в самом WordPress. На сервере важно увидеть, загружен ли модуль и не отключен ли он для веб-версии PHP. В WordPress — понять, нет ли конфликтов с плагинами, которые пытаются «ускорять» PHP своими методами.
Проверка через phpinfo() и CLI
Если есть доступ к серверу, посмотрите конфигурацию PHP из командной строки:
php -i | grep -i opcacheДля веб-окружения удобнее временно создать файл с phpinfo() или открыть страницу с выводом параметров через хостинг-панель. Ищите строки вроде Zend OPcache, opcache.enable, opcache.memory_consumption.
Если в CLI OPcache включен, а на сайте — нет, это не редкость. У PHP-FPM и CLI могут быть разные конфиги. Настраивать нужно именно тот SAPI, который обслуживает сайт.
Что смотреть в WordPress
В админке WordPress косвенные признаки тоже полезны: если после обновления темы или плагина изменения не видны, а очистка кэша не помогает, возможно, OPcache держит старую версию файла слишком долго. Это не баг WordPress, а вопрос параметров validate_timestamps и revalidate_freq.
Если у вас есть доступ к серверным логам, проверьте ошибки вида:
PHP Fatal error: Allowed memory size exhausted— OPcache может быть слишком маленьким, но причина не всегда только в нем;opcache file cacheилиrestart pending— полезно смотреть контекст, особенно после деплоя;- несовпадение версий PHP после обновления окружения.
Как настроить OPcache для WordPress без лишнего риска
Базовая настройка обычно делается в конфиге PHP, а не в WordPress. На большинстве серверов это файл php.ini, отдельный файл в conf.d или пул PHP-FPM. Если вы не уверены, где именно лежит активный конфиг, сначала найдите его через php --ini или через вывод phpinfo().
Ниже — рабочий стартовый набор параметров для типичного WordPress-сайта. Это не «магические значения», а аккуратная база, от которой можно отталкиваться.
opcache.enable=1
opcache.enable_cli=0
opcache.memory_consumption=128
opcache.interned_strings_buffer=16
opcache.max_accelerated_files=10000
opcache.validate_timestamps=1
opcache.revalidate_freq=60
opcache.save_comments=1Что здесь важно:
memory_consumption— объем памяти под кэш байткода. Для небольшого сайта 128 МБ часто достаточно, но если плагинов много, может понадобиться больше;max_accelerated_files— лимит на количество кэшируемых файлов. Если он слишком низкий, OPcache начнет вытеснять файлы раньше времени;validate_timestampsиrevalidate_freq— баланс между скоростью и тем, как быстро подхватываются изменения в коде;save_comments=1лучше не отключать без понимания последствий: некоторые плагины и инструменты анализа кода завязаны на комментарии и docblock.
Когда не стоит ставить validate_timestamps=0
Иногда советуют отключить проверку изменений файлов ради максимальной скорости. Для WordPress это рискованный вариант, если у вас нет дисциплины деплоя и ручной очистки OPcache после каждого обновления. Иначе вы получите ситуацию, когда код уже изменен на диске, а сайт продолжает исполнять старую версию.
Если у вас продакшн с управляемыми релизами, validate_timestamps=0 допустим, но только при понятном процессе сброса кэша после выкладки. Для обычного сайта безопаснее оставить проверку и подобрать разумный интервал.
Сравнение подходов: серверная настройка, плагин и компромисс
OPcache сам по себе настраивается на сервере. Плагин не может заменить его, но может помочь с очисткой кэша или показать состояние окружения. Если нужен выбор, ориентируйтесь на доступ к серверу и дисциплину обновлений.
| Подход | Что дает | Минусы | Когда выбирать |
|---|---|---|---|
| Настройка в php.ini / PHP-FPM | Полный контроль, предсказуемый результат | Нужен доступ к серверу | Почти всегда, если вы администрируете хостинг сами |
| Плагин для очистки кэша | Удобно сбрасывать кэш после обновлений | Не настраивает сам OPcache | Если деплой делается через админку или без SSH |
| Оставить настройки хостинга по умолчанию | Минимум действий | Часто параметры слишком общие | Если хостинг уже дал адекватный профиль и все стабильно |
Если у вас есть доступ к серверу, настройка руками почти всегда лучше, чем полагаться на дефолты хостинга. Но если сайт ведет несколько человек и обновления идут через админку, полезно иметь понятный процесс очистки кэша после изменений.
Пошаговое внедрение на боевом сайте
Лучше не менять все сразу. Сначала зафиксируйте текущие параметры, потом внесите минимальные изменения и проверьте поведение сайта под обычной нагрузкой.
- Снимите текущие значения через
phpinfo()илиphp -i. - Убедитесь, что сайт работает на том же PHP, который вы настраиваете.
- Включите OPcache, если он выключен.
- Задайте умеренный объем памяти и лимит файлов.
- Оставьте проверку timestamp включенной, если нет строгого процесса деплоя.
- Перезапустите PHP-FPM или веб-сервис, чтобы применить конфиг.
- Проверьте, что сайт и админка открываются без ошибок.
Если у вас Nginx + PHP-FPM, после изменения конфигурации обычно нужен перезапуск PHP-FPM, а не веб-сервера целиком. Конкретная команда зависит от дистрибутива и версии PHP, но логика одна: применить новый конфиг к пулу, который обслуживает сайт.
Пример проверки после перезапуска
php -i | grep -i "opcache.enable\|opcache.memory_consumption\|opcache.max_accelerated_files"Если команда показывает новые значения, значит конфиг подхватился. Но этого недостаточно: важно проверить именно веб-запросы, потому что CLI и FPM могут жить отдельно.
Как проверить, что решение сработало
Проверка должна быть практической, а не «страница открывается — значит все хорошо». Смотрите на три вещи: статус OPcache, стабильность после обновлений и поведение под повторными запросами.
- в
phpinfo()видно, что OPcache включен; - после нескольких одинаковых запросов время ответа не скачет без причины;
- после обновления темы или плагина изменения действительно применяются;
- в логах нет ошибок, связанных с нехваткой памяти OPcache;
- админка не стала вести себя странно после перезапуска PHP-FPM.
Если есть доступ к серверу, полезно посмотреть статистику OPcache через opcache_get_status(). Это уже не для постоянного использования на проде, а как разовая диагностика. Например:
<?php
$status = opcache_get_status(false);
if ($status) {
echo 'OPcache enabled: ' . (!empty($status['opcache_enabled']) ? 'yes' : 'no') . PHP_EOL;
echo 'Used memory: ' . $status['memory_usage']['used_memory'] . PHP_EOL;
echo 'Free memory: ' . $status['memory_usage']['free_memory'] . PHP_EOL;
}
Этот код лучше запускать временно и только там, где вы контролируете доступ. После проверки файл нужно удалить.
Частые ошибки и как их исправить
Изменения в коде не появляются
Обычно причина в слишком агрессивной настройке validate_timestamps=0 или в слишком большом revalidate_freq. Если вы не используете управляемый деплой, верните проверку файлов и сократите интервал.
OPcache быстро заканчивает память
Симптомы — предупреждения в логах и нестабильная работа после серии запросов. Увеличьте memory_consumption и проверьте max_accelerated_files. На сайтах с большим числом плагинов 128 МБ может оказаться мало.
Настройки применились в CLI, но не на сайте
Это почти всегда разные конфиги для CLI и FPM/Apache. Ищите активный конфиг именно у веб-окружения. Не ориентируйтесь только на php -i из консоли.
После обновления плагина сайт ведет себя странно
Если OPcache держит старые файлы, перезапустите PHP-FPM или очистите кэш тем способом, который поддерживает ваш стек. На некоторых хостингах это делается через панель, на других — через сервисный рестарт.
Безопасность и производительность: что не забыть
OPcache не делает сайт безопаснее сам по себе, но неправильная настройка может усложнить поддержку. Не отключайте проверку файлов без процесса деплоя, не ставьте слишком большие значения «на всякий случай» и не оставляйте временные диагностические скрипты в корне сайта.
Если вы регулярно чистите сайт от лишнего кода, дубликатов и служебного мусора, полезно сочетать серверную оптимизацию с аккуратной работой над WordPress-слоем. В таких задачах часто помогает Clearfy Pro, если вам нужен именно набор практических инструментов для чистки и технической оптимизации WordPress, а не замена серверной настройки.
Но важный момент: никакой плагин не заменит корректный OPcache на сервере. Плагин может помочь с организацией, а ускорение PHP-кода остается задачей уровня окружения.
Короткий чек-лист перед выкладкой
- Проверен активный PHP-конфиг для веба, а не только для CLI.
- OPcache включен и виден в
phpinfo(). - Память и лимит файлов не выглядят заниженными.
- Для продакшна выбран понятный режим обновления файлов.
- После перезапуска PHP-FPM сайт и админка открываются без ошибок.
- Изменения в коде подхватываются в ожидаемый срок.
Если после настройки сайт стал стабильнее под нагрузкой и перестал тратить лишнее время на повторную компиляцию PHP-файлов, значит вы настроили OPcache по делу, а не просто «включили галочку». Для WordPress это как раз тот случай, когда небольшая серверная правка дает ощутимый и проверяемый эффект.