
Що таке OPcache: ⚡ Прискорюємо PHP та WordPress
Якщо ви коли-небудь цікавилися, як прискорити свій сайт на WordPress, ви, напевно, чули про “кешування”. Зазвичай мова йде про кешування сторінок, коли плагін зберігає готову HTML-копію сторінки. Але існує інший, глибший рівень кешування, який працює до того, як ця HTML-сторінка взагалі буде створена. Йдеться про OPcache.
На мою думку, увімкнений та правильно налаштований OPcache — це найефективніша оптимізація, яку ви можете зробити на стороні сервера. У цій статті я поясню, що це за технологія, як вона кардинально змінює роботу PHP, і як її налаштувати для вашого сайту.
Як працює PHP без OPcache? (повільний шлях)
Коли користувач заходить на ваш сайт, веб-сервер (наприклад, Nginx) передає запит PHP-обробнику, про який ми говорили в статті про FastCGI та PHP-FPM. Щоб виконати index.php
, PHP виконує 4 кроки:
- Читання: Читає
.php
файл з диска. - Лексичний аналіз: Розбирає текстовий код на “слова” (токени).
- Компіляція: Перетворює ці токени на машинно-зрозумілий “байт-код”, який називається Opcodes (опкоди).
- Виконання: Виконує ці опкоди.
На сайті WordPress при кожному завантаженні сторінки завантажуються десятки файлів (ядро, тема, плагіни). І цей 4-етапний процес відбувається для кожного файлу при кожному запиті. Це величезна, марна робота.
Як працює PHP з увімкненим OPcache? (швидкий шлях)
OPcache — це розширення PHP, яке зберігає вже скомпільовані опкоди у спільній пам’яті.
Коли надходить перший запит:
- Читання -> Аналіз -> Компіляція -> Збереження опкодів у пам’ять -> Виконання.
Коли надходить другий і всі наступні запити:
- Отримання опкодів з пам’яті -> Виконання.
Ми пропускаємо три з чотирьох кроків! PHP більше не витрачає час на читання файлів з диска та їх компіляцію. Він миттєво бере готовий “рецепт” з пам’яті. Це драматично знижує навантаження на процесор та прискорює час генерації сторінки (TTFB).
Чому OPcache — це “маст-хев” для WordPress?
OPcache — це не те саме, що плагіни кешування сторінок (WP-Rocket, W3 Total Cache). Вони працюють на різних рівнях:
- OPcache: Прискорює генерацію сторінки (роботу самого PHP).
- Кеш сторінок: Зберігає вже згенеровану HTML-сторінку.
Вони не замінюють, а ідеально доповнюють один одного. Навіть коли вам потрібно скинути кеш сторінок, OPcache продовжує працювати, і сторінка згенерується набагато швидше. Для адмін-панелі WordPress, яка зазвичай не кешується, OPcache — це просто порятунок.
- 🚀 Значно прискорює роботу CMS (WordPress, Joomla, Drupal).
- 📉 Знижує навантаження на CPU вашого VPS.
- ⚡ Покращує показник TTFB, що є важливим для SEO.
Практика: як налаштувати OPcache в php.ini
У більшості сучасних версій PHP, OPcache вже вбудований та увімкнений за замовчуванням. Але його налаштування “з коробки” не завжди оптимальні. Нам потрібно знайти наш файл php.ini
. (Якщо ви не знаєте, де він, згадайте нашу статтю про встановлення PHP).
Відкрийте php.ini
та знайдіть секцію [opcache]
. Ось рекомендовані налаштування, які я використовую:
; Вмикаємо OPcache opcache.enable=1 ; Вмикаємо OPcache для консольних скриптів opcache.enable_cli=1 ; Виділяємо 128 МБ пам'яті під кеш опкодів opcache.memory_consumption=128 ; Скільки файлів можемо зберігати в кеші (підберіть під свій проєкт) opcache.max_accelerated_files=10000 ; Вмикаємо перевірку актуальності файлів opcache.validate_timestamps=1 ; Як часто перевіряти файли на зміни (в секундах) opcache.revalidate_freq=5
Важливо: налаштування для Production vs Development
Налаштування вище ідеально підходять для розробки (Development), оскільки opcache.revalidate_freq=5
змушує PHP перевіряти файли на зміни кожні 5 секунд. Ви можете редагувати код і одразу бачити зміни.
Для бойового сервера (Production), де код не змінюється щохвилини, я рекомендую встановити opcache.revalidate_freq=60
(або навіть вимкнути opcache.validate_timestamps=0
). Це дасть максимальну продуктивність, оскільки PHP взагалі не буде звертатися до диска для перевірки файлів. Але пам’ятайте: після оновлення плагінів або теми вам доведеться перезапустити PHP-FPM, щоб скинути кеш.
Як перевірити, що OPcache працює?
Це дуже просто. Створіть у корені вашого сайту файл info.php
з таким вмістом:
<?php phpinfo(); ?>
Відкрийте цей файл у браузері (https://your-site.com/info.php
) і натисніть Ctrl+F
, щоб знайти “OPcache”. Ви повинні побачити цілий блок, присвячений цьому розширенню. Головний рядок — opcache.enable
, який має стояти в позиції “On“. Та/або значення “Up and Running” повинно бути для рядка “Opcode Caching“.
Ви також побачите статистику: кількість “hits” (влучань у кеш) та “misses” (промахів). На робочому сайті відсоток влучань має бути дуже високим (99%+).
Важливо: Не забудьте видалити файл info.php
після перевірки, оскільки він розкриває багато інформації про ваш сервер.
Висновок: безкоштовне прискорення, яке вже у вас є
На мою думку, запускати WordPress-сайт без увімкненого OPcache у 2025 році — це просто злочин проти продуктивності. Це вбудований у PHP механізм, який не коштує вам нічого, але дає миттєвий та суттєвий приріст швидкості.
Перевірте налаштування свого сервера. Переконайтеся, що OPcache не просто увімкнений, а оптимально налаштований. Це той самий “легкий” тюнінг, який перетворює ваш сайт із просто робочого на справді швидкий.
Додаткове покращення: використовувати ще й Varnish-кешування. Varnish бере оброблену OPcache сторінку, віддає її відвідувачу і зберігає копію у себе в кеші для наступних відвідувачів. Якщо готова сторінка є в кеші Varnish: він миттєво її віддає і все, далі запит не йде. Результат: відвідувачі отримують відповідь миттєво. Навантаження на веб-сервер, PHP та базу даних дорівнює нулю для закешованих сторінок. Детальніше про технологію у нашому огляді Varnish.