Система Бітрікс включає в себе різні технології кешування. Кешування дозволяє зменшити навантаження на апаратні ресурси (за винятком файлової системи зрозуміло), таким чином впливаючи на час відгуку сайту. Як правило, кешування використовується як у стандартних компонентах системи, так і в компонентах, розроблених під свої потреби. Результати ресурсномістких, а так само рідко оновлюються шматків коду заносяться в кеш, при повторному запиті, готовий результат може видаватися з кешу, і при великих навантаженнях на сайт приріст продуктивності за рахунок кешування стає очевидним. Зробити кешування належним чином — ювелірна справа, але зневірятися не варто — все приходить з досвідом.
За замовчуванням для кешування в Бітрікс-е створені два класу, це 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 “”; print_r($arIBlockElement); echo “”;
}
# записуємо попередньо буферізірованний висновок у файл кеша
# разом з додаткової змінної
$obCache->EndDataCache(array(
“SECTION_TITLE” => $SECTION_TITLE
));
}

Додав: htmaker, 15.11.2013 р.
(2 голосів, середній: 5,00 з 5)

Завантаження…

Діліться з друзями:

См. також:


Налаштування часу у VMBitrix
Рубрика: Bitrix, Linux

Видалення «кинутих» кошиків в системі Бітрікс
Рубрика: Bitrix

Використання highload-блоків в Bitrix
Рубрика: Bitrix

Як виконати SQL запит в Bitrix
Рубрика: Bitrix

Як підрахувати кількість елементів в Bitrix?
Рубрика: Bitrix

Динамічне масштабування зображень в Bitrix
Рубрика: Bitrix

Виключаємо користувача з ID=1 групи адміністраторів в Bitrix
Рубрика: Bitrix

Як скинути пароль адміністратора у Bitrix?
Рубрика: Bitrix

SQL-запити в бітрікс
Рубрика: Bitrix