Оптимизация загрузки OPcache PHP

Например, для веб-сайтов, основанных на WordPress , Joomla или Laravel и не имеющих пользовательского контента, рекомендуется хранить все страницы в статическом HTML-кеше и регенерировать кеш вручную (или автоматически) только при внесении изменений в бэкэнд. Однако, если страница содержит динамический контент, который зависит от сеансов и файлов cookie или также от языка и местоположения, OPcache подходит .


Так называемое время загрузки для всех трех упомянутых систем составляет более 100 мс при недавно установленном сервере CentOS7 (с SSD и PHP 7.1). Каждый раз, когда выполняется сценарий PHP, он должен быть скомпилирован в байт-код во время выполнения. OPcache теперь реализует кеш для этого байт-кода - если тот же сценарий PHP выполняется со следующим запросом, его не нужно перекомпилировать. После активации OPcache выставляем следующие настройки:

9006cec6c5d3d2498ee26c5bfd91590a

Время выполнения (в среднем по 10 выполнений) теперь значительно сокращено.:

WordPress 4.7.4 Joomla 3.7 Laravel 5.4
без OPcache 295 мс 201 мс 110 мс
с OPcache 54 мс 59 мс 13 мс
Фактор 5,5 3,5 8,5

Поскольку мы устанавливаем validate_timestamps равным 0 и в то же время revalidate_freq равным одному дню, кеш почти никогда не перестраивается автоматически (мы сознательно делаем это вручную). С помощью небольшого крючка git скрипт PHP выполняется при каждом «нажатии». Как активировать крючок:

a1678610c8b4c7db5997375944183830

a1678610c8b4c7db5997375944183830

Следующая вспомогательная функция также полезна для измерения отдельных частей кода (или всего времени выполнения).:

085f4291bbcc4e8a64bbea951ff49ab9

Если вы хотите получить полезную информацию, такую ​​как статус, использованная память или количество файлов в кэше, вы можете использовать эту функцию PHP.:

3f6309d04bc7e48dd909859321b96209

Чтобы извлечь выгоду из OPcache в локальной среде разработки (что обычно не рекомендуется), мы используем уловку.

OPcache активен на всех серверах, на которых установлен модуль OPcache, и на которых параметр opcache.enable не установлен явно. Мы так и оставим. В php.ini мы устанавливаем только opcache.validate_timestamps = 1. Это означает, что opcache.revalidate_freq = 2. Это означает, что OPcache повторно проверяется почти постоянно для каждого проекта. Для тех проектов, в которых мы хотим активировать OPcache постоянно, мы используем связанные с проектом в .htaccess следующий параметр:

1dd64a3f2fe4425b29b1409410fe3fc0

Затем перезапускаем веб-сервер и создаем следующий скрипт:

91fb5289160e410607c9ea89112a575b

Этот сценарий очищает кеш и одновременно восстанавливает его. Теперь мы устанавливаем команду RunOnSave, связанную с рабочей областью, в нашем любимом редакторе VSCode.:

91fb5289160e410607c9ea89112a575b

Назад