для начала проверить - включено ли кеширование статики для клиентов (в .htaccess)
потом смотреть на сами изображения
бессмысленно использовать в интернет-магазине изображения размером 2000х3000 пискелей и весом под 3МБ каждое
выбирайте оптимальный размер изображений (вполне достаточно 600х600 - 800х800)
обработка изображений в графических редакторах так же позволяет значительно уменьшить их вес, при практически незаметной для глаз потере в качестве
в шаблоне желательно прописать width и height для изображений - так страница начнет формироваться непосредственно при загрузке
проверьте библиотеку system/library/image.php:
в строке public function save($file, $quality = 90) {
цифра 90 указывает на степень сжатия кешируемых изображений и наиболее оптимальна для соотношения качество/размер, если отличается - измените
там же можно добавить преобразование в прогрессивный jpeg - так картинки начнут отрисовываться сразу при загрузке
для этого перед строкой
imagejpeg($this->image, $file, $quality);
вставьте строку
imageinterlace($this->image, true);
это основные моменты
из дополнительных
как уже подсказали - можно использовать постепенную подгрузку изображений по мере прокрутки страницы (lazy load)
так же, можно использовать распараллеливание подгрузки для статики в несколько потоков с 3-5 поддоменов/алиасов