Меню и включаемые области выводятся почти на каждой странице, поэтому их кэширование заметно снижает нагрузку на базу и PHP. Разберём, как правильно кэшировать menu.php-меню и include-области и почему кэш иногда не сбрасывается.
bitrix:menu прямо на странице в режиме правки, а глобальное автокэширование включается в Настройки → Настройки продукта → Автокэширование.Что именно кэшируется в меню и include-областях
В 1С-Битрикс за вывод меню отвечает компонент bitrix:menu, который читает файлы .left.menu.php, .top.menu.php и другие *.menu.php. Каждое построение меню — это обход дерева разделов, проверка условий и прав доступа, что при большом сайте создаёт лишние запросы к БД.
Включаемые области — это участки, которые Битрикс подключает через $APPLICATION->IncludeComponent("bitrix:main.include", ...) или файлы вида sect_include.php / inc_...php. Их содержимое обычно статично и отлично поддаётся кэшированию.
- Кэш меню — сохраняет результат построения пунктов меню (HTML или массив пунктов) в файл или в память.
- Кэш include-области — сохраняет отрендеренный HTML включаемого блока.
- Меню типа «Управляемый кэш» — автоматически сбрасывается при изменении структуры или инфоблоков.
Типы кэширования меню в компоненте
У компонента bitrix:menu в параметрах есть блок «Настройки кэширования» с параметром Тип кэширования (CACHE_TYPE). Возможны три значения:
| Значение | Поведение | Когда использовать |
|---|---|---|
| Кэшировать (Y) | Кэш строится всегда и держится заданное время кэширования | Меню редко меняется, простая структура |
| Не кэшировать (N) | Меню строится при каждом хите | Отладка, динамические пункты по пользователю |
| Авто+Управляемое (A) | Кэш зависит от глобального автокэширования и сбрасывается по тегам/событиям | Рекомендуемый режим для боевого сайта |
Параметр Время кэширования (CACHE_TIME) по умолчанию 3600 секунд. При типе «Авто» время фактически не ограничивает кэш — сброс происходит по управляемому кэшу.
Как включить кэширование меню
Настроить кэш меню можно на самой странице через визуальный редактор:
- Откройте публичную страницу и включите режим правки (кнопка «Правка» на административной панели).
- Наведите на область меню и нажмите «Изменить параметры компонента» (шестерёнка).
- Разверните блок «Настройки кэширования».
- В поле Тип кэширования выберите
Авто+Управляемое. - Убедитесь, что включён флаг «Учитывать права доступа» (
CACHE_GROUPS = Y), если меню зависит от групп пользователей. - Сохраните параметры.
Флаг «Учитывать права доступа» важен: если его отключить, все посетители получат один и тот же кэш, и закрытые разделы могут показаться неавторизованному пользователю.
Кэширование включаемых областей
Для включаемых областей используется компонент bitrix:main.include. У него тоже есть блок настроек кэширования с параметрами CACHE_TYPE и CACHE_TIME.
- Для статичных блоков (баннер, контакты, футер) ставьте тип «Авто+Управляемое» — блок закэшируется и сбросится при редактировании файла.
- Битрикс автоматически добавляет тег управляемого кэша на файл включаемой области, поэтому при сохранении содержимого через визуальный редактор кэш обновляется сам.
- Если область подключается «сырым»
requireбез компонента, кэш нужно организовывать вручную через$APPLICATION->IncludeFile()или конструкцию кэша\Bitrix\Main\Data\Cache.
Для крупных повторяющихся блоков (например, вывод HTML-блока на всех страницах) выгоднее компонентный кэш, чем прямое подключение файла, — это снимает нагрузку с диска и парсинга PHP.
Автокэширование и управляемый кэш
Чтобы тип «Авто» реально работал, глобально должно быть включено автокэширование:
- Перейдите в Настройки → Настройки продукта → Автокэширование (или кнопка «Автокэширование» на панели в самом низу).
- Включите режим «Включить автокэширование».
После этого меню и include-области с типом A будут кэшироваться и сбрасываться автоматически. Управляемый кэш меню завязан на:
- изменение структуры файлов и папок (создание/удаление раздела);
- правку файлов
*.menu.phpи.section.php; - изменение элементов инфоблоков, если пункты меню строятся из инфоблока.
Если у вас настроен тегированный кэш, сброс меню, построенного из инфоблока, происходит по тегу инфоблока при изменении элемента — это точечнее, чем полная очистка.
Частые ошибки
Наиболее типичные проблемы при кэшировании меню и включаемых областей:
- Меню не обновляется после правки
.menu.php. Скорее всего выключено автокэширование или тип стоит «Кэшировать» с большим временем. Переключите на «Авто+Управляемое» или очистите кэш меню. - Разные группы видят чужое меню. Отключён флаг «Учитывать права доступа» — включите
CACHE_GROUPS = Y. - Динамические пункты (имя пользователя, корзина) закэшировались. Такие блоки нельзя кэшировать целиком — выносите их в отдельную некэшируемую область или используйте композитный сайт.
- Кэш «прибит» вручную удалением
/bitrix/cache/, но меню всё равно старое. При управляемом кэше нужно чистить и/bitrix/managed_cache/, иначе метки останутся. - Include-область правится напрямую по FTP. При правке файла в обход визуального редактора управляемый кэш может не пометиться на сброс — выполните очистку кэша вручную.
- Слишком короткое время кэширования. При типе «Кэшировать» с временем 60 секунд эффекта почти нет — кэш постоянно перестраивается.
Как сбросить и проверить кэш меню
Сбросить кэш меню и включаемых областей можно несколькими способами:
- Настройки → Настройки продукта → Автокэширование → «Очистить файлы кэша» — полный сброс.
- Кнопка «Сбросить кэш» на административной панели внизу публичной страницы.
- Точечно — удалить каталог меню в
/bitrix/cache/menu/и связанные метки в/bitrix/managed_cache/.
Проверить, что меню действительно кэшируется, помогает Монитор производительности: запустите трассировку хита и сравните число запросов к БД до и после включения кэша. Также можно временно поставить у меню тип «Не кэшировать» и увидеть рост числа SQL-запросов на странице.
Итог
Меню и включаемые области — одни из самых частых элементов на странице, поэтому их кэширование даёт быстрый выигрыш почти без риска.
- Для меню и include-областей используйте тип «Авто+Управляемое».
- Держите глобальное автокэширование включённым.
- Не забывайте про флаг «Учитывать права доступа» для меню с закрытыми разделами.
- Динамические пункты выносите из-под кэша или используйте композит.
- После правок файлов вне визуального редактора чистите кэш вручную.
Такой набор настроек снимает лишние запросы к БД и ускоряет отдачу типовых страниц без ущерба для актуальности содержимого.