Проблема в долгом реагировании сайта на отзыв.
Наше предварительное решение — подключить кеширование 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.