Не могли бы вы подсказать, в чем ошибка.
| Код |
|---|
$cache_id = serialize(array($arParams['OBJECT_ID']));
$cache_path = SITE_ID.'/'.str_replace(':', '/', $this->GetName()); |
...
*Очистка кэша происходит сразу после добавления записи
| Код |
|---|
CPHPCache::Clean($cache_id, $cache_path); |
...
| Код |
|---|
$obCache = new CPHPCache;
if ($obCache->InitCache($arParams['CACHE_TIME'], $cache_id, $cache_path))
{
$vars = $obCache->GetVars();
foreach ($vars as $key => $value)
$arResult[$key] = $value;
$obCache->Output();
}
elseif ($obCache->StartDataCache())
{
getComments(); // рекурсивная функция, заполняющая массив
$arResult['COMMENTS'] = $comments; // получение массива записей
$this->IncludeComponentTemplate();
$obCache->EndDataCache(array("arResult" => $arResult));
@define("ERROR_404", "Y");
CHTTP::SetStatus("404 Not Found");
$obCache->AbortDataCache();
} |
В итоге действительно для разных элементов создается разный кеш, но в Отладке запросов видно, что выполняются лишние запросы (причем вероятность случайная). Я так понимаю, что при включенном кешировании запросов вообще быть не должно.
prefix:moduleID: 0.005 с; кеш: 24 КБ
prefix:moduleID: 0.0198 с; Запросов: 58 (0.0037 с); кеш: 25 КБ
prefix:moduleID: 0.0049 с; кеш: 24 КБ
prefix:moduleID: 0.0087 с; кеш: 24 КБ
prefix:moduleID: 0.0196 с; Запросов: 58 (0.0036 с); кеш: 25 КБ
prefix:moduleID: 0.0048 с; кеш: 24 КБ
prefix:moduleID: 0.0048 с; кеш: 24 КБ
prefix:moduleID: 0.0049 с; кеш: 24 КБ
А так же интересно, как сделать так, чтобы выбранная группа(или группы) пользователей имели свой кеш.