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