Здравствуйте
Мне нужно закешировать меню, но оно не кешируется
Скопировал меню (bitrix:menu) в свое пространство имен
Ниже весь код кэширования
$this->startResultCache(false, $subDomain, $subDomain.$this->GetRelativePath())
В этой строке я:
- первым параметом указал false - чтобы кэш брался по умолчанию из arParams - здесь вопросов нет
- третий парамет указал путь сохранения, он сохраняет кэш в указанное место, вопросов здесь тоже нет
- второй парамет $subDomain (здесь находится не меняющаяся строка), сюда передаются параметры при помощи которых формируется кэш, параметр здесь не меняется, он всего один. Почему же тогда по этому пути при переходе на каждую новую страницу формируется для каждой страницы кеш для данного компонента я не пойму?
Мне нужно закешировать меню, но оно не кешируется
Скопировал меню (bitrix:menu) в свое пространство имен
Ниже весь код кэширования
$this->startResultCache(false, $subDomain, $subDomain.$this->GetRelativePath())
В этой строке я:
- первым параметом указал false - чтобы кэш брался по умолчанию из arParams - здесь вопросов нет
- третий парамет указал путь сохранения, он сохраняет кэш в указанное место, вопросов здесь тоже нет
- второй парамет $subDomain (здесь находится не меняющаяся строка), сюда передаются параметры при помощи которых формируется кэш, параметр здесь не меняется, он всего один. Почему же тогда по этому пути при переходе на каждую новую страницу формируется для каждой страницы кеш для данного компонента я не пойму?
Код |
---|
if($this->startResultCache(false, $subDomain, $subDomain.$this->GetRelativePath())) { if(defined("BX_COMP_MANAGED_CACHE")) $CACHE_MANAGER->registerTag("bitrix:menu"); //Read root menu $menu = new CMenu($arParams["ROOT_MENU_TYPE"]); $menu->Init($curDir, $arParams["USE_EXT"], $componentPath."/stub.php"); $menu->RecalcMenu($arParams["ALLOW_MULTI_SELECT"], $arParams["CACHE_SELECTED_ITEMS"]); $arResult = array(); //Read child menu recursive if ($arParams["MAX_LEVEL"] > 1) { $this->getChildMenuRecursive( $menu->arMenu, $arResult, $arParams["CHILD_MENU_TYPE"], $arParams["USE_EXT"], $menu->template, $currentLevel = 1, $arParams["MAX_LEVEL"], $arParams["ALLOW_MULTI_SELECT"], $arParams["CACHE_SELECTED_ITEMS"], false ); if($arParams["SHOW_LAST_LEVEL_BUTTONS"]!="Y") { $arResult["menuDir"] = $menu->MenuDir; $arResult["menuType"] = $menu->type; } else { $arResult["initMenuDir"] = $menu->MenuDir; $arResult["initMenuType"] = $menu->type; } } else { $arResult = $menu->arMenu; $arResult["menuDir"] = $menu->MenuDir; $arResult["menuType"] = $menu->type; for ($menuIndex = 0, $menuCount = count($menu->arMenu); $menuIndex < $menuCount; $menuIndex++) { //Menu from iblock (bitrix:menu.sections) if (is_array($arResult[$menuIndex]["PARAMS"]) && isset($arResult[$menuIndex]["PARAMS"]["FROM_IBLOCK"])) { $arResult[$menuIndex]["DEPTH_LEVEL"] = $arResult[$menuIndex]["PARAMS"]["DEPTH_LEVEL"]; $arResult[$menuIndex]["IS_PARENT"] = $arResult[$menuIndex]["PARAMS"]["IS_PARENT"]; } else { //Menu from files $arResult[$menuIndex]["DEPTH_LEVEL"] = 1; $arResult[$menuIndex]["IS_PARENT"] = false; } } } unset($menu->arMenu); $this->endResultCache(); } |