Отправка сообщения






Добро пожаловать!

Кэширование в Битрикс (классы CPageCache и CPHPCache)

Система Битрикс включает в себя разные технологии кэширования. Кэширование позволяет уменьшить нагрузку на аппаратные ресурсы (за исключением файловой системы разумеется), таким образом влияя на время отклика сайта. Как правило, кэширование используется как в стандартных компонентах системы, так и в компонентах, разработанных под свои нужды. Результаты ресурсоемких, а так же редко обновляемых кусков кода заносятся в кэш, при повторном запросе, готовый результат может выдаваться из кэша, и при больших нагрузках на сайт прирост производительности за счет кэширования становиться очевидным. Сделать кэширование должным образом — дело ювелирное, но отчаиваться не стоит — всё приходит с опытом.
По умолчанию для кэширования в Битрикс-е созданы два класса, это CPageCache и CPHPCache. Первый служит для кеширования HTML, второй для кэширования HTML и PHP переменных.
Файлы кэша записываются в каталог /bitrix/cache/. Если время кэширования не истекло, то вместо ресурсоемкого кода будет подключен предварительно созданный файл кэша. Стоит заметить, что неразумное использование кэширования может привести к значительному увеличению размера каталога с файлами кэша.

HTML кэширование:

# создаем объект
$obCache = new CPageCache;

# время кеширования в секундах
$lifeTime = 30*60;

# формируем ID кеша в зависимости от всех параметров 
# которые могут повлиять на результирующий HTML
$cacheID = $arParams['ELEMENT_ID'].$arParams['IBLOCK_TYPE'];

# инициализируем буферизирование вывода
if($obCache->StartDataCache($lifeTime, $cacheID, "/")){
	
#
# Сюда помещается ресурсоёмкий код, с выводом результата
#
	
	
# записываем предварительно буферизированный вывод в файл кеша
$obCache->EndDataCache(); 
}

 
Кэширование HTML и PHP переменных:

# создаем объект
$obCache = new CPHPCache;

# время кеширования в секундах
$lifeTime = 30*60; 

# формируем идентификатор кеша в зависимости от всех параметров 
# которые могут повлиять на результирующий HTML
$cacheID = $arParams['ELEMENT_ID'].$arParams['SECTION_ID']; 

# если кеш есть и он ещё не истек то
if($obCache->InitCache($lifeTime, $cacheID, "/")){
    # получаем закешированные переменные
    $vars = $obCache->GetVars();
    $SECTION_TITLE = $vars["SECTION_TITLE"];
} else {
    # иначе обращаемся к базе
    $arSection = GetIBlockSection($arParams['SECTION_ID']);
    $SECTION_TITLE = $arSection["NAME"];
}

# добавляем пункт меню в навигационную цепочку
$APPLICATION->AddChainItem($SECTION_TITLE, $SECTION_URL."SECTION_ID=".$arParams['SECTION_ID']);

# начинаем буферизирование вывода
if($obCache->StartDataCache()){

    # выбираем из базы параметры элемента инфоблока
    if($arIBlockElement = GetIBlockElement($arParams['ELEMENT_ID'], $IBLOCK_TYPE)){
        echo "<pre>"; print_r($arIBlockElement); echo "</pre>";
    }

    # записываем предварительно буферизированный вывод в файл кеша
    # вместе с дополнительной переменной
    $obCache->EndDataCache(array(
        "SECTION_TITLE" => $SECTION_TITLE
        )); 
}

Добавил: htmaker, 15.11.2013 г.
 
плохослабосойдетхорошоотлично (2 голосов, средний: 5,00 из 5)
Загрузка...

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Комментарии

  • Загрузка...

Наверх