Как я ни пытался применить изменения из статьи, подгоняя их под более старую версию ОС, не мог избавиться от ошибок из-за несоответствия 1.5.5.1 и 1.5.2.1, в итоге просто убрал rating из запроса (как я понимаю, в моей версии этого нет)
$query = $this->db->query("SELECT DISTINCT *, pd.name AS name, p.image, m.name AS manufacturer,
(SELECT points FROM " . DB_PREFIX . "product_reward pr WHERE pr.product_id = p.product_id AND customer_group_id = '" . (int)$customer_group_id . "') AS reward,
(SELECT ss.name FROM " . DB_PREFIX . "stock_status ss WHERE ss.stock_status_id = p.stock_status_id AND ss.language_id = '" . (int)$this->config->get('config_language_id') . "') AS stock_status,
(SELECT wcd.unit FROM " . DB_PREFIX . "weight_class_description wcd WHERE p.weight_class_id = wcd.weight_class_id AND wcd.language_id = '" . (int)$this->config->get('config_language_id') . "') AS weight_class,
(SELECT lcd.unit FROM " . DB_PREFIX . "length_class_description lcd WHERE p.length_class_id = lcd.length_class_id AND lcd.language_id = '" . (int)$this->config->get('config_language_id') . "') AS length_class,
(SELECT COUNT(*) AS total FROM " . DB_PREFIX . "review r2 WHERE r2.product_id = p.product_id AND r2.status = '1' GROUP BY r2.product_id) AS reviews,
p.sort_order
FROM " . DB_PREFIX . "product p
LEFT JOIN " . DB_PREFIX . "manufacturer m ON (p.manufacturer_id = m.manufacturer_id)
LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id)
WHERE p.product_id IN ('" . implode("','", array_keys($product_data)) . "')");
И наконец то загрузилась страница категории, но результаты меня как-то совсем не впечатлили (возможно я что-то упустил из виду, но изменений не много и они касаются всего 4 файлов, и единственные серьезные несоответствия есть только в контроллере product.php, но я их вроде бы все учел).
Холодный старт с очищенным кешем БЕЗ изменений из статьи:
Холодный старт с очищенным кешем С изменениями из статьи:
Горячий старт с кешем БЕЗ изменений из статьи:
Горячий старт с кешем С изменениями из статьи:
Все измерения проводились локально с тремя повторами для чистоты эксперимента, цифры приблизительно те же. В категории 4 000 товаров, на страницу вывод 15-ти, всего в магазине 16 000 товаров