Как включить OPcache и ускорить PHP-сайт на VPS

Как включить OPcache и ускорить PHP-сайт на VPS

Ваш сайт на PHP тормозит, а сервер перегружен? Решение — OPcache. Рассказали, как включить и оптимизировать его на VPS, чтобы страницы загружались быстрее, а сервер работал стабильнее даже при высокой посещаемости.

Введение

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

В материале рассказали, как включить и правильно настроить OPcache на VPS-сервере, чтобы ускорить работу PHP-сайтов. Объяснили, как проверить, активирован ли OPcache на сервере, как включить это расширение при необходимости и какие параметры изменить для максимальной производительности.

Аренда VPS/VDS — от ₽219/месяц

Почему выбирают VPS от AdminVPS:

✓ Дешевле физического сервера

✓ Более гибкий и мощный, чем обычный хостинг

✓ Бесплатная защита от DDoS и техподдержка 24/7

✓ Масштабируется под любые задачи

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

Определение и возможности OPcache

Представьте, что каждый раз, открывая дверь дома, вам пришлось бы заново строить весь дом — стены, крышу, мебель. Примерно так и работает PHP без OPcache: при каждом обращении он снова и снова компилирует одни и те же скрипты. OPcache ломает этот замкнутый круг. Он берёт ваш код, один раз превращает его в машинный байт-код и прячет в оперативную память. В следующий раз PHP просто достаёт готовый результат, не тратя лишние секунды. Итог — страницы прогружаются быстрее, сервер дышит свободнее, а посетители не успевают заскучать. Настройка предельно простая, ведь OPcache уже включён в PHP, нужно лишь его активировать и задать параметры.

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

Включение OPcache на VPS

Проще всего проверить, включён ли OPcache, через phpinfo(). Создайте файл phpinfo.php с содержимым <?php phpinfo(); и откройте его в браузере. В таблице параметров найдите раздел OPcache. Если он присутствует и там указано opcache.enable = On, значит кеширование включено. Аналогично можно запустить php -m в терминале и проверить, присутствует ли OPcache в списке модулей.

Если OPcache не активен, его нужно установить и запустить. На Debian или Ubuntu это делается командой:

sudo apt install php-opcache

Или соответствующий пакет под вашу версию PHP, например, php8.1-opcache. В других дистрибутивах команда может отличаться. Например, в CentOS:

yum install php-opcache

После установки проверьте, подключился ли модуль к PHP.

Далее откройте файл php.ini, найти его можно командой php --ini. Откройте этот файл в редакторе от имени администратора и добавьте или раскомментируйте следующие строки:

zend_extension=opcache.so
opcache.enable=1
opcache.memory_consumption=128
opcache.max_accelerated_files=10000
opcache.revalidate_freq=60

Сохраните изменения, а затем перезапустите PHP, чтобы настройки начали работать. Если ваш сервер использует Apache с модулем PHP, выполните:

sudo systemctl restart apache2

А для связки Nginx + PHP-FPM пропишите:

sudo systemctl restart php-fpm

В случае, если у вас другое окружение или панель управления, перезапустите соответствующий сервис PHP. После перезагрузки зайдите на сайт и снова проверьте через phpinfo(), OPcache должен отображаться как Enabled.

Ускорение сайта с помощью OPcache

Включить OPcache — это только первый шаг. Чтобы реально выжать из него максимум, нужно подстроить параметры под свой проект. После активации откройте файл php.ini и измените ключевые настройки:

opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=10000
opcache.revalidate_freq=60
opcache.validate_timestamps=1

Параметр opcache.memory_consumption отвечает за то, сколько места в памяти сервер выделит под кеш. Для небольшого сайта хватит 64 МБ, среднему проекту комфортнее работать со 128 МБ, а крупным ресурсам лучше сразу дать 256 МБ, чтобы не упираться в лимиты.

opcache.interned_strings_buffer можно смело оставлять на уровне 8 МБ, этого хватает подавляющему большинству сайтов. А вот opcache.max_accelerated_files задаёт, сколько PHP-файлов OPcache сможет держать под рукой. Для WordPress достаточно диапазона от 8000 до 10000, чтобы в памяти всегда были самые нужные скрипты.

opcache.revalidate_freq задаёт, как часто OPcache проверяет изменения в коде. Для боевого сайта оптимально 30–60 секунд, чтобы не тратить лишние ресурсы на постоянные проверки. А opcache.validate_timestamps=1 позволяет автоматически подхватывать изменения файлов без ручного сброса кеша. Если хотите максимальной скорости и обновляете код редко, можно поставить 0 и очищать кеш вручную после каждого обновления.

После правок перезапустите PHP:

sudo systemctl restart php-fpm

или:

sudo systemctl restart apache2

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

Тонкая настройка OPcache для максимальной скорости

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

  • opcache.enable=1 — включает кеширование. Если стоит 0, OPcache не работает вообще.
  • opcache.memory_consumption=128 — определяет, сколько оперативной памяти выделяется под кеш. Маленькому сайту хватит 64 МБ, среднему — 128 МБ, крупному стоит дать 256 МБ и больше.
  • opcache.interned_strings_buffer=8 — память для интернированных строк, то есть строк, которые PHP хранит в одном экземпляре для экономии ресурсов. Обычно 8 МБ хватает с запасом.
  • opcache.max_accelerated_files=10000 — сколько PHP-файлов OPcache держит в памяти. По умолчанию их около 2000, и этого часто мало для крупных CMS. Для WordPress комфортно от 8000 до 10000 файлов, а для огромных проектов можно увеличить лимит до 20000.
  • opcache.revalidate_freq=60 — как часто в секундах OPcache проверяет, не изменился ли код. Если поставить 0, проверка будет при каждом запросе. Это полезно для разработки, но тормозит сайт. Для продакшена выбирайте 30–60 секунд.
  • opcache.validate_timestamps=1 — автоматическая проверка изменений файлов. Значение 0 чуть ускоряет работу, но потребует вручную очищать кеш после каждого обновления кода, иначе сайт будет показывать старую версию. В большинстве случаев лучше оставить 1, чтобы не думать о сбросе кеша.

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

Советы по использованию OPcache

Всегда включайте OPcache на продакшене. Если у вас до сих пор отключено кеширование опкода, вы теряете значительную долю производительности. OPcache встроен в PHP, бесплатен и не требует поддержки, нет причин оставлять его выключенным на рабочем сервере. Даже на небольших сайтах ускорение будет заметно, а на нагруженных проектах прирост скорости может быть огромным.

OPcache не требует вашего внимания в повседневной работе, но если вы часто вносите изменения в файлы, помните про параметр проверки. Слишком редкий интервал (opcache.revalidate_freq) приводит к тому, что изменения в коде могут долго не применяться. На время разработки ставьте минимальный интервал 1-2 секунды, а на продакшене используйте разумное значение, 30–60 секунд. После обновлений ядра CMS или плагинов полезно сбрасывать кеш OPcache вручную, например, перезапуском PHP. Это гарантирует, что сайт сразу начнёт работать на новой версии кода, не ожидая плановой проверки.

Время от времени проверяйте, насколько заполнен кеш OPcache, например, через phpinfo(). Если видите, что кеш заполнен практически на 100 %, увеличьте значения opcache.memory_consumption, а при необходимости и opcache.max_accelerated_files. Иначе OPcache будет вынужден вытеснять старые скрипты из памяти и компилировать их заново, поедая ресурсы. Лучше оставить небольшой запас памяти под кеш, чтобы расширение работало без перебоев.

OPcache прекрасно сочетается с другими методами оптимизации. Он ускоряет именно выполнение PHP-кода на сервере. Чтобы раскрыть потенциал вашего VPS, параллельно задумайтесь об объектном кешировании, например, кеширование результатов запросов к базе данных в Redis или Memcached, и о кешировании страниц для WordPress через специальные плагины. Эти уровни оптимизации не мешают друг другу, а наоборот, дополняют: OPcache ускоряет генерацию динамики, а объектный и страничный кеш снимают лишнюю нагрузку.

Заключение

Включение OPcache — один из самых простых способов ускорить PHP-сайт. Настраивается он один раз, а пользу приносит постоянно: страницы будут открываться быстрее, а сервер будет испытывать меньшую нагрузку. Для WordPress и других популярных CMS OPcache стал стандартным приёмом оптимизации. Если у вас он ещё отключён, самое время включить и посмотреть на практике, какой прирост скорости это даёт.

Читайте в блоге:

Loading spinner
0 Комментарий
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

Нужен VPS сервер?

Арендуйте мощный VPS сервер для ваших проектов! Быстрая настройка, высокая производительность и надежная поддержка 24/7. Начните прямо сейчас!

Что будем искать? Например,VPS-сервер

Мы в социальных сетях