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

Назад