Skip to content

Instantly share code, notes, and snippets.

@w1cerg
Last active April 4, 2023 11:13
Show Gist options
  • Save w1cerg/201a8f83ea174bac75af8508d84c8ef6 to your computer and use it in GitHub Desktop.
Save w1cerg/201a8f83ea174bac75af8508d84c8ef6 to your computer and use it in GitHub Desktop.
<?php
/*
Меню имеет встроенной внутренний кеш, см. bitrix/modules/main/classes/general/menu.php:192
`$bCacheIsAllowed = CACHED_menu!==false && !$USER->IsAuthorized() && $this->MenuExtDir == '';`
В кеш сохраняются значения LINK, LINKS, PERM
Это единственное место использования CACHED_menu, и самое тяжелое что там есть - права доступа к файлу
Т.е. получаем что CACHED_menu - это кеш меню для неавторизованного пользователя, для экономии на получении
прав доступа.
*/
/*
CACHE_SELECTED_ITEMS - параметр для компонента меню, если не выставить в N то генерирует новый кеш для каждой страницы
при условии что шаблон выполняется всегда, контент не кешируется - чаще всего это излишне
Согласно документации https://dev.1c-bitrix.ru/learning/course/?COURSE_ID=43&LESSON_ID=5402:
`
Если на сайте меню одного типа в подпапках не переопределяется, то можно при подключении меню указать параметр:
"CACHE_SELECTED_ITEMS" => "N",
Это приведет к тому, что при создании файла кеша меню в ключе не будет участвовать url. А расчет выбранного уровня будет происходить после получения данных из кеша.
`
*/
/*
Параметр "Распространять куки на все домены" работает подключением скрипта /bitrix/spread.php в конце страницы.
При кастомных запросах ajax и изменении в них cookies механизм не будет работать сам.
Как решение: отдавать значение $GLOBALS['APPLICATION']->GetSpreadCookieHTML() в ответе и вручную добавлять его на страницу
Там будет <script> тег, тогда будет работать как задумывалось битриксом.
*/
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment