OPcache - встроенный в PHP кэш скомпилированного байт-кода: без него сервер при каждом запросе заново читает и компилирует все PHP-файлы, с ним - берёт готовый результат из памяти. Для тяжёлых платформ вроде 1С-Битрикс, где на запрос подключаются сотни файлов, включённый и правильно настроенный OPcache ускоряет генерацию страниц в 2-3 раза. Это бесплатно: модуль входит в PHP начиная с версии 5.5, вопрос только в том, включён ли он у вас и с какими лимитами.

Как проверить за минуту. Создайте в корне сайта файл со строкой вызова phpinfo и откройте его в браузере: в разделе Zend OPcache видно состояние кэша и все параметры. На многих хостингах то же самое показывает панель управления в настройках PHP. После проверки тестовый файл удалите - оставлять phpinfo публичным нельзя.

Сколько даёт OPcache и почему он бывает выключен

На типовом Битрикс-проекте включение OPcache снижает время генерации страницы с 0,8-1,2 секунды до 0,3-0,5 - это чувствуется и посетителями, и админкой. Выключенным он оказывается по трём причинам: дешёвый тариф хостинга, где модуль недоступен, устаревшая конфигурация, пережившая несколько переездов, или перестраховка после какого-то давнего конфликта. Во всех трёх случаях стоит навести порядок: одна настройка окупает час работы многократно.

Настройка OPcache: параметры, которые действительно важны

ПараметрРекомендацияЗа что отвечает
opcache.memory_consumption128-256 МБПамять под кэш; мало - кэш вытесняется и толку нет
opcache.max_accelerated_files50000 и большеСколько файлов кэшируется; у Битрикс их десятки тысяч
opcache.validate_timestamps1 на типовом проектеПроверять ли файлы на изменения
opcache.revalidate_freq2-60 секундКак часто проверять изменения файлов
opcache.interned_strings_buffer16-32 МББуфер строк; экономит память на больших проектах

Параметры задаются в php.ini или через панель хостинга. После изменения перезапустите PHP и убедитесь по phpinfo, что значения применились: частая история - правили не тот php.ini.

Осторожно с отключением проверки файлов. Режим validate_timestamps=0 - самый быстрый, но тогда PHP не замечает правок кода: вы обновляете файлы, а сайт живёт старой версией до ручного сброса кэша. Включайте его, только если после каждого деплоя гарантированно сбрасывается OPcache. Симптом «правим - ничего не меняется» - почти всегда про это.

Настроим сервер под ваш сайт

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

Ускорить сервер

Что настроить в PHP рядом с OPcache

Раз уж открыли настройки PHP, проверьте соседние пункты. Версия PHP: каждая мажорная версия быстрее предыдущей, переход с 7.4 на 8.2-8.3 сам по себе даёт десятки процентов ускорения. Лимит памяти: заниженный memory_limit роняет тяжёлые операции - разбор в статье про превышение лимита памяти PHP. Время выполнения: если скрипты упираются в максимум, читайте разбор ошибки maximum execution time exceeded - лечится не только увеличением лимита.

Совет. Меняйте параметры по одному и фиксируйте замер после каждого: время ответа сервера до и после. Иначе через неделю невозможно сказать, что именно помогло, а что просто заняло вечер. Для замеров хватает DevTools и колонки TTFB.

Почему OPcache включён, а сайт не ускорился

Первое - кэшу тесно: память забита, файлов больше лимита, кэш постоянно вытесняется и пересобирается. В phpinfo это видно по счётчикам заполненности и перезапусков. Второе - узкое место не в компиляции PHP: медленная база данных, внешние запросы, тяжёлый фронтенд. OPcache ускоряет только исполнение кода, поэтому диагноз ставится замером: если TTFB упал, а сайт всё равно ощущается медленным - копайте фронт и базу. Третье - на хостинге OPcache общий для всех клиентов и ваши файлы в нём не задерживаются: это аргумент в пользу переезда на нормальный тариф или VPS.

Частые вопросы про OPcache

OPcache и композитный кэш Битрикс - это одно и то же?
Нет, это разные уровни: OPcache ускоряет исполнение PHP-кода, композит кэширует готовый HTML страниц. Они не заменяют, а дополняют друг друга: композит отдаёт кэшированные страницы, OPcache ускоряет всё, что генерируется динамически - формы, корзину, админку.
Сколько памяти выделить под OPcache?
Для сайта на Битрикс - 128-256 МБ. Точнее скажет статистика: если кэш заполнен под завязку и растёт число перезапусков - добавьте. Выделять гигабайты «про запас» не нужно: неиспользуемая память кэшу не помогает.
После правок кода сайт не обновляется - это OPcache?
Очень похоже: либо validate_timestamps выключен, либо период проверки большой. Сбросьте кэш перезапуском PHP или через панель хостинга - если правки появились, диагноз подтверждён. Дальше решите: включить проверку изменений или добавить сброс кэша в процедуру деплоя.
На виртуальном хостинге OPcache вообще доступен?
На большинстве современных тарифов - да, часто включён по умолчанию, но с общими скромными лимитами. Проверьте phpinfo: если модуля нет или память крошечная, спросите поддержку хостинга. Отказ - весомый повод присмотреться к VPS: для растущего магазина он окупается быстро.

OPcache - типичный пример «бесплатного» ускорения, о котором забывают, потому что оно невидимо в браузере. Час на проверку и настройку - и сервер начинает отвечать вдвое быстрее. Не хочется лезть в php.ini самостоятельно - сделаем в рамках доработки сайтов: аудит серверных настроек, OPcache, кэширование и замеры, а на абонентской поддержке держим эти настройки в порядке после любых обновлений и переездов. Консультация бесплатная.