Повільний OpenCart — одна з найпоширеніших проблем з якою стикаються власники інтернет-магазинів. У цій статті розберемо покроковий процес оптимізації від аналізу до результату.
Крок 1: Аналіз slow query log
Перш за все увімкніть slow query log у MySQL/MariaDB:
slow_query_log = 1 slow_query_log_file = /var/log/mysql/slow.log long_query_time = 0.5
Використовуйте pt-query-digest для аналізу найважчих запитів. Найчастіше проблема в таблицях oc_product, oc_product_description та oc_category_path.
Крок 2: Індекси та запити
Додайте composite індекси на часто фільтровані поля. Типовий приклад — запити на сторінці категорії виконують full table scan через відсутній індекс на (status, date_available).
Крок 3: FastCGI Cache
Nginx FastCGI cache дає найбільший приріст для статичних сторінок. TTFB падає з 2-4 секунд до 10-50ms для закешованих сторінок. Налаштуйте виключення для кошика та адмінки.
Крок 4: Redis Object Cache
OpenCart підтримує Redis через стандартний cache driver. Замість дискового кешу session та object cache переключіться на Redis — це прискорює динамічні сторінки на 30-50%.
Крок 5: OPcache + JIT
PHP 8.x JIT компіляція дає 10-20% приросту для CPU-heavy операцій. Налаштуйте opcache.memory_consumption=256 і opcache.jit_buffer_size=64M.
Результат
Після комплексної оптимізації реального магазину з 80k товарів: TTFB категорій 4200ms → 380ms, MySQL CPU 240% → 18%.