Кеширование функций и 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();
}
