Например, для веб-сайтов, основанных на 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