Кеширование функций и 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 = & JFactory::getCache();
$cache->setCaching(1); // Принудительное использование кэша, даже если отключено в настройках

Вызов через кэш метода класса:

$rows = $cache->call( array( 'TestClass', 'testMethod' ) );

Вызов через кэш функции (без массива):

$rows  = $cache->call( 'testFunction' );

Очистка всего кэша целиком:

$cache->cleanCache();

Этот метод удалит все файлы из папки /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();
}