Блог

7 Сентября 2015

Решение проблемы с разрастанием кеша меню в Битрикс

Компонент menu в Битрикс имеет неприятную особенность. Он создает кеш для каждой страницы сайта. На масштабных проектах, содержащий большое количество страниц, речь может идти от сотнях мегабайт бесполезного кеша меню.

В поисках решения проблемы был изучен код из класса /bitrix/components/bitrix/menu/class.php.

Оказалось, что за построение кеша меню для каждой страницы отвечает параметр CACHE_SELECTED_ITEMS, отключив который мы получим требуемое поведение компонента. Вот тот самый фрагмент кода класса:


if($this->arParams["CACHE_SELECTED_ITEMS"])
   $strCacheID = $APPLICATION->GetCurPage();
else
   $strCacheID = ""; 

По умолчанию этот параметр включен. Поэтому при вызове компонента необходимо явно передать значение "N" для параметра CACHE_SELECTED_ITEMS.


$APPLICATION->IncludeComponent("bitrix:menu", "top", Array(
   "ROOT_MENU_TYPE" => "top",   // Тип меню первого уровня
   "MENU_CACHE_TYPE" => "A",   // Тип кеширования
   "MENU_CACHE_TIME" => "3600",   // Время кеширования
   "MENU_CACHE_USE_GROUPS" => "N",   // Учитывать права доступа
   ...
   "CACHE_SELECTED_ITEMS" => "N", // Создавать кеш меню для каждой страницы
   ),
   false
);

В итоге без кастомизации компонентов мы отключили построение кеша меню для каждой страницы сайта. Используйте в своих проектах.


Комментарии

Рекламное агентствоИнтернет-студия
ООО «Компания 28», г. Москва, Краснопресненская набережная д. 12
© Интернет студия 28WEB, 2018
Интернет-студия 28WEB
Интернет-студия 28WEB - разработка сайтов и интернет магазинов, продвижение сайтов, поддержка сайтов, внедрение корпоративных порталов.
123610
Россия
Московская область
Москва
Краснопренсненская набережная, д. 12
Закрыть
Заказать
разработку или продвижение
по почте web@28web.ru или через форму ниже Загрузка...
Адрес
и телефон
ООО «Компания 28», г. Москва, Краснопресненская набережная д. 12
Спасибо за заявку!

Мы свяжемся с Вами в ближайшее время.