Наприклад, для веб-сайтів, які базуються на 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