Делюсь своим решением:
1. Ставим
Для просмотра ссылки Войди или Зарегистрируйся - для удобства
2. Ставим модифицированый opencart-mysql-cache. Для этого распаковываем файлы из архива в корень магазина, в config.php прописываем СВОЙ ПУТЬ папки cache_sql
PHP:
define('DIR_CACHE_SQL', 'Z:\home\localhost\www\Tests\m154/system/cache_sql/');
затем
PHP:
define('DB_DRIVER', 'mysql');
меняем на
PHP:
define('DB_DRIVER', 'mysql_cached');
//define('DB_DRIVER', 'mysql');
и в startup.php после
PHP:
require_once(DIR_SYSTEM . 'library/cache.php');
дописываем
PHP:
require_once(DIR_SYSTEM . 'library/cache_sql.php');
3. Загружаем на сервер файл query2.php, меняем в нём параметры в подключения к серверу MySql и в 55 строке указываем ваш путь в папке cache_sql
4. Ставим AutoIt, редактируем скрипт bot.au3, меняя в нём mysite.ru на адрес вашего сайта, 2013-12-31 на дату последнего дня текущего месяца (если нужно), в части строки %20p2c.category_id%20=%20'60' меняем 60 на номер первой ПОДкатегории с товарами, в части строки %20p2c.category_id%20=%20'61' меняем 61 на номер второй ПОДкатегории с товарами и т.д., в строке "$URL = $StartUrl[$j] & $i*15 & ",15"" меняем 15 на ваше количество товаров на странице
Для снижения нагрузки можно поменять Sleep(60) на Sleep(5000) (сменить паузу между запросами с 60мс увеличить до 5сек).
Внимание! Данное решение делалось для ocStore 1.5.4, под версию 1.5.5 оно не подходит.
Работает всё следующим образом. Установка модифицированого opencart-mysql-cache позволяет сохранять ответы mysql на жёсткий диск сервера. Когда запрос выполняется первый раз, он отправляется mysql серверу и его ответ сохраняется на диске, если этот же запрос выполняется снова, то он не отправляется на mysql сервер и считывается из дискового файлового кэша. При работе opencart с большим количеством товаров есть один запрос, на который приходится 90-99% времени всех запросов. У меня этот запрос выполняется без кэша примерно за 5 сек. Чтобы уменьшить время на mysql запросы достаточно закэшировать ответ на этот запрос. Для кэширования я использую скрипт bot.au3 который отправляет этот запрос (точнее несколько запросов такого типа) на сервер посредством скрипта query2.php.
Для запуска скрипта bot.au3 который инициирует кэширование медленных запросов opencarta по нему надо 'кликнуть'.
Указанные действия позволяют снизить время генерации страницы до 0.23 сек при количестве товаров 200 000.
P.S. простите за плохой код, делалось для себя на скорую руку