Кеширование функций и html-вывода + отладка
Пример кэширования функции в классе:
$cache = JFactory::getCache('plg_system_dpfieldsext'); // Аргумент задает имя подпапки в JPATH_CACHE, в которую будут сохраняться файлы
$cache->setCaching(1); // Принудительное кэширование
$cache->setLifeTime(60); // Время жизни кэша (в минутах)
$refs = $cache->call(array(__CLASS__, 'getRefs'), $refcat); // Вызов с кэшированием результата статичной (это обязательно) функции getRefs текущего класса с параметром $refcat
static function getRefs($refcat){
....
return $refs;
}
Отладка (вывод временных меток) делается так:
jimport( 'joomla.error.profiler' ); // Создаем объект JProfiler. $profiler = new JProfiler(); // Делаем отметку времени echo $profiler->mark( ' секунд прошло' );
Кэширование объектов/функций:
Вызов через кэш метода класса:
Вызов через кэш функции (без массива):
Очистка всего кэша целиком:
Этот метод удалит все файлы из папки /cache. Будте осторожны с использованием этой функции для высоконагруженных проектов - это может серьезно замедлить работу Joomla.
Кэширование html-вывода:
// создаем объект кеша $cache = JFactory::getCache('com_test', 'output'); // выбираем уникальный идентификатор кеша $cache_id = JRequest::getVar('Itemid', 1); // начало кеширования if (!$cache->start($cache_id)) { ?> <div> Сложный и ресурсоемкий вывод HTML кода </div> <?php // конец кеширования $cache->end(); }