Проблема в довгому реагуванні сайту на відклик.
Наше попереднє вирішення це підключити кешування Redis для нашого сайту tehnoexpert.com.ua, та подивитись чи це допоможе для швидкого відкривання сторінок, категорії та підкатегорії. Якщо ця дія не допоможе то потрібно буде встановити на сайт потрібний модуль по кешуванню, налаштувати його та перевірити чи ця дія допоможе. Або третій варіант це адаптувати ядро сайту, чи теми сайту під швидке реагування сайту на відклик по посиланнях, товарах.
Приклад модулів для кешування , https://opencartadmin.com/jet-cache
https://www.opencart.com/index.php?route=marketplace/extension/info&extension_id=37650&filter_search=cache
Або аналоги
Опис проблеми від підтримки хостингу:
Відразу бачимо, що при перегляді товарів на сайті відбувається не оптимізовані запити в базу даних, пошук результатів яких займає довгий час, через що сторінка довго завантажується. Приклад таких запитів:
use tehnoexpert_main;
SET timestamp=1752305970;
SELECT m.manufacturer_id AS value_id, m.image, m.name AS name FROM oc_manufacturer m LEFT JOIN oc_manufacturer_to_store m2s ON (m.manufacturer_id = m2s.manufacturer_id) LEFT JOIN oc_product p ON (m.manufacturer_id = p.manufacturer_id) WHERE m2s.store_id = '0' GROUP BY m.manufacturer_id ORDER BY m.sort_order ASC, name ASC;
# Time: 250712 10:40:37
# User@Host: tehnoexpert_main[tehnoexpert_main] @ localhost []
# Thread_id: 67 Schema: tehnoexpert_main QC_hit: No
# Query_time: 16.217911 Lock_time: 0.000049 Rows_sent: 2203 Rows_examined: 8812
# Rows_affected: 0 Bytes_sent: 40604
SET timestamp=1752306037;
SELECT m.manufacturer_id AS value_id, m.image, m.name AS name FROM oc_manufacturer m LEFT JOIN oc_manufacturer_to_store m2s ON (m.manufacturer_id = m2s.manufacturer_id) LEFT JOIN oc_product p ON (m.manufacturer_id = p.manufacturer_id) WHERE m2s.store_id = '0' GROUP BY m.manufacturer_id ORDER BY m.sort_order ASC, name ASC;
# Time: 250712 10:41:08
# User@Host: tehnoexpert_main[tehnoexpert_main] @ localhost []
# Thread_id: 77 Schema: tehnoexpert_main QC_hit: No
# Query_time: 15.807077 Lock_time: 0.000070 Rows_sent: 2203 Rows_examined: 8812
# Rows_affected: 0 Bytes_sent: 40604
SET timestamp=1752306068;
SELECT m.manufacturer_id AS value_id, m.image, m.name AS name FROM oc_manufacturer m LEFT JOIN oc_manufacturer_to_store m2s ON (m.manufacturer_id = m2s.manufacturer_id) LEFT JOIN oc_product p ON (m.manufacturer_id = p.manufacturer_id) WHERE m2s.store_id = '0' GROUP BY m.manufacturer_id ORDER BY m.sort_order ASC, name ASC;
# Time: 250712 10:42:30
# User@Host: tehnoexpert_main[tehnoexpert_main] @ localhost []
# Thread_id: 109 Schema: tehnoexpert_main QC_hit: No
# Query_time: 14.659375 Lock_time: 0.000044 Rows_sent: 2203 Rows_examined: 8812
# Rows_affected: 0 Bytes_sent: 40604
SET timestamp=1752306150;
SELECT m.manufacturer_id AS value_id, m.image, m.name AS name FROM oc_manufacturer m LEFT JOIN oc_manufacturer_to_store m2s ON (m.manufacturer_id = m2s.manufacturer_id) LEFT JOIN oc_product p ON (m.manufacturer_id = p.manufacturer_id) WHERE m2s.store_id = '0' GROUP BY m.manufacturer_id ORDER BY m.sort_order ASC, name ASC;
# Time: 250712 10:43:12
# User@Host: tehnoexpert_main[tehnoexpert_main] @ localhost []
# Thread_id: 120 Schema: tehnoexpert_main QC_hit: No
# Query_time: 14.884237 Lock_time: 0.000151 Rows_sent: 2203 Rows_examined: 8812
# Rows_affected: 0 Bytes_sent: 40604
Видно що один і той самий повільний SQL-запит виконується кожні кілька секунд, що створює навантаження на mariadb. Проблема однотипних запитів до бази даних це комбінація поганого кешування + повторне завантаження одних і тих самих даних на кожному запиті.
Тобто однотипний SQL запит до таблиць oc_manufacturer, oc_manufacturer_to_store, oc_product виконується при кожному завантаженні сторінки і витягує всі виробники, які прив’язані до магазину, разом із їх назвою та зображенням, і сортує їх по порядку/алфавіту.
Рішення Вашої проблеми може бути оптимізація таких запитів до бази даних, шляхом зміни структури SQL запиту, що потребує більш детальнішого ознайомлення з таблицями бази даних .
Або ж можна підключити кешування Redis для Вашого сайту на Opencart, щоб однотипні дані кешувались в оперативну пам'ять і не надсилались кожного разу до mariadb.