Емае, пришел сюда в поисках мудрых советов, а оказывается что все как-то глухо с оптимизацией 2.x )
В общем тут на соседнем форуме, уж простите за ссылку, это тоже обсуждают:
..............
Я так понимаю, это задействует кешь, даже если кеширование отключено в Joomla или для авторизованных.
Совершенно верно, я поправил и добавил кое что там, скину инфу и сюда.
Пациент - интернет магазин. Штук 200 категорий, пару тысяч товаров. На главной пару слайдеров товаров, меню категорий.
До доработок -
1000 запросов на главной. "АААА!" - подумал я - "это очень неразумно!" )))
Начал оптимизировать. С указанным кэшированием ссылок и выборочным кэшированием слайдеров и производителей получил 200-220 запросов. Понятное дело, когда кэш обновляется (я поставил раз в 30 минут), можно "словить" и 600 запросов - благо он обновляется не весь сразу )
плагин "System - кэш" должен быть ВЫКЛЮЧЕН.
Нашел способ как кэшировать результаты работы функций - дебаг показывает уменьшение запросов, в папке /cache/ создаются и обновляются раз в 15 мин нужные файлики...
например закэшировал вывод модуля "производителей":
пошел в файл
modules\mod_virtuemart_manufacturer\mod_virtuemart_manufacturer.php
находим там обычные строки
$manufacturers = $model->getManufacturers(true, true,true);
$model->addImages($manufacturers);
т.е. мы как бы присваиваем переменной $manufacturers результат выполнения метода getManufacturers и пихем картинки туда методом addImages.
Неплохо бы не дергать эти методы постоянно - производители же не меняются каждую минуту, верно?
вставил перед вышеуказанными строками:
Код:
$cache = JFactory::getCache('virtuemart_frontend_manufacturers', ''); // понятное название директории с кэшем
$cache->setCaching( 1 ); // принудительно включаем кэширование
$key = 'virtuemart_frontend_manufacturers' ; // уникальный ключ кэша - тут можно вязать ID модуля и т.п. но у меня модуль один и на главной - поэтому я не заморачивался - у меня уникальным является и "virtuemart_frontend_manufacturers"
вместо вышеуказанных строк -
Код:
if (!($manufacturers = $cache->get($key))) { // если короче в кэше не нашли наших производитлей
$manufacturers = $model->getManufacturers(true, true,true); // таки вызываем методы
$model->addImages($manufacturers); // и картинки тоже пихаем
$cache->store($manufacturers, $key); // ну и сохраняем в кэш нашу переменную под уникальным кеем
}
Вуаля - тестим, проверяем запросы.По этому способу можно извращаться с кэшем как угодно)))
Да, у меня отчего-то начал пихаться кэш страниц в папку /cache/pages/ и как результат начали кэшироваться всякие ненужности типа корзины и т.п. - то из-за чего я решился на правку кода и тонкие эксперименты
я решил пока проблему заглушкой, поставив права "444" на эту папку