Всем добрый вечер.
Что имею:
В параметрах время жизни кэша 30 секунд.
template.php
<pre>
<? var_dump($arResult) ?>
</pre>
component.php(метод CIBlockSection::GetList):
if ($this->StartResultCache()) {
if (!CModule::IncludeModule("iblock")) {
$this->AbortResultCache();
ShowError("IBLOCK_MODULE_NOT_INSTALLED");
return false;
}
$arSort= array("SORT" => "ASC", "DATE_ACTIVE_FROM" => "DESC", "ID" => "DESC");
$arFilter = array("IBLOCK_ID" => $arParams["IBLOCK_ID"], "ACTIVE" => "Y", "ACTIVE_DATE" => "Y");
$arSelect = array("ID", "IBLOCK_ID", "IBLOCK_SECTION_ID", "NAME", "DATE_ACTIVE_FROM", "DEPTH_LEVEL", "UF_MAIN_SECTION");
$rsElement = CIBlockSection::GetList(false, $arFilter, false, $arSelect, false);
while ($obElement = $rsElement->GetNext()) {
$arResult["ITEMS"][] = $obElement;
}
$this->SetResultCacheKeys(array());
$this->IncludeComponentTemplate();
}
component.php(метод CIBlockElement::GetList):
if ($this->StartResultCache()) {
if (!CModule::IncludeModule("iblock")) {
$this->AbortResultCache();
ShowError("IBLOCK_MODULE_NOT_INSTALLED");
return false;
}
$arSort= array("SORT" => "ASC", "DATE_ACTIVE_FROM" => "DESC", "ID" => "DESC");
$arFilter = array("IBLOCK_ID" => $arParams["IBLOCK_ID"], "ACTIVE" => "Y", "ACTIVE_DATE" => "Y");
$arSelect = array("ID", "IBLOCK_ID", "NAME", "DATE_ACTIVE_FROM", "PREVIEW_TEXT", "PREVIEW_PICTURE");
$rsElement = CIBlockElement::GetList($arSort, $arFilter, false, $arNavParams, $arSelect);
while($obElement = $rsElement->GetNextElement()) {
$arElement = $obElement->GetFields();
$arResult["ITEMS"][] = $arElement;
}
$this->SetResultCacheKeys(array());
$this->IncludeComponentTemplate();
}
Что делаю:
Сейчас изучаю механизм кэширования и так уж получилось, что начал с кэширования на bitrix. Заметил такую штуку, что если в кэшируемой области вызываю метод CIBlockSection::GetList и результат выборки вношу в $arResult, то:
1. При сбрасывание кэша на странице, получаю результат выборки template.php;
2. При изменении элемента инфоблока кэш обновляется, но результата выборки в template.php нет;
3. Когда заканчивается время жизни кэша, инициирую хит, но результата выборки в template.php нет;
Если же в области кэширования использую CIBlockElement::GetList, то все работает нормально:
1. При изменении элемента инфоблока кэш обновляется, и результат выборки попадает в template.php;
2. Когда заканчивается время жизни кэша, инициирую хит, и результата выборки попадает в template.php;
Вопрос:
Проблема в самом методе CIBlockSection::GetList или в моем коде?