На сайтах где много страниц - кеш меню очень сильно разрастается, инодга на несколько гигабайт, что сильно тормозит работу сайта, так как на каждую страницу Битрикс зачем-то создает свой кеш меню.
Это оказывается можно выключить, если добавить скрытый недокументированный параметр "CACHE_SELECTED_ITEMS" => "N"
<?$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
);?>
но из за незнания этих особенностей все сайты на Битрикс (даже самые простые) где много страниц - могут занимать Гигабайты (причем большую часть места занимает именно кеш).
Если добавить этот параметр - то тогда для меню создается всего один файл кеша для всех страниц сайта.
Но если оставить как есть по умолчанию - то ваше меню будет разрастаться и распухать как на дрожжах, так как при каждом посещении новой страницы (при каждом разном $APPLICATION->GetCurPage() ) ваш кеш будет пухнуть.
Например, даже если у вас в меню всего 5 страниц, но зато 1000 товаров, то кеш меню создастся 1000 раз.
Зачем так мучать сервер? Выключите, пожалуйста, этот параметр по умолчанию, или добавьте константу которая будет эту штуку отключать, или хотя-бы вынесете в параметры меню, чтобы можно было отключать ее одним кликом мышки.
Вспомнил, при этой включенной настройке подсвечивается только текущий активный пункт меню раздела каталога, в котором находимся, а разделы родители по отношению к текущему, не подсвечиваются, ALLOW_MULTI_SELECT => Y не помогает.
Меню разрастается бесконечно, пока не забьется полностью диск, вот у клиента с большим каталогом под 100К товаров это и случилось, на каждую страницу файл кэша меню размером 514Кб = ~56Гб только папка с кэшем меню получилась, упс
Вспомнил, при этой включенной настройке подсвечивается только текущий активный пункт меню раздела каталога, в котором находимся, а разделы родители по отношению к текущему, не подсвечиваются, ALLOW_MULTI_SELECT => Y не помогает.
Для решения этого момента можно использовать параметр ADDITIONAL_LINKS, передавая в него все ссылки на дочерние разделы. Для ссылок на файлы - работает без доработок.
Ну вот, теперь после обновления 1С-Битрикс 23.300.0 проблема с кешированием меню. Теперь наоборот требуется включать данный параметр "CACHE_SELECTED_ITEMS" => "Y"
Иначе (например левое меню), в разных разделах (по разным url) будет глючить и выводиться по первому кешу.
Для ссылок на файлы - работает без доработок.
Теперь наоборот требуется включать данный параметр "CACHE_SELECTED_ITEMS" => "Y"
Иначе (например левое меню), в разных разделах (по разным url) будет глючить и выводиться по первому кешу.