Оптимизируем кэш меню — добавляем параметр CACHE_SELECTED_ITEMS => N, чтобы не плодить тысячи файлов
Дата публикации: 24.06.2026

Оптимизируем кэш меню — добавляем параметр CACHE_SELECTED_ITEMS => N, чтобы не плодить тысячи файлов

Хочу себе такие же кнопки
ccb9a536

Введение: почему кэш меню важен и как небольшое изменение спасает сервер

Вы уже заметили, что при росте каталога товаров или структуре меню в Битриксе количество файлов в папке /bitrix/cache/ начинает «размножаться» до десятков тысяч. Каждый такой файл – отдельный запрос к файловой системе, а это значит:

  • замедление генерации страниц, потому что ОС тратит время на поиск и открытие файлов;
  • повышенная нагрузка на диск, особенно на SSD с ограниченным числом IOPS;
  • риски потери кэша при чистке временных файлов.

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


1. Что такое кэш меню в Битриксе

Параметр Описание По умолчанию Что происходит без ограничения
CACHE_TYPE Тип кэша (A – автоматический, Y – всегда, N – отключён) A Кэшируется каждый запрос, но количество файлов не контролируется
CACHE_TIME Время жизни кэша в секундах 3600 (1 ч) После истечения времени кэш перезаписывается, но количество файлов остаётся
CACHE_SELECTED_ITEMS Максимальное число вариантов «выбранных» пунктов, которые сохраняются в кэше не задан (по умолчанию – всё) При каждом изменении пути в меню генерируется отдельный файл, что приводит к их росту

CACHE_SELECTED_ITEMS – это «фильтр» для кэша: он говорит компоненту, что хранить нужно только N самых популярных комбинаций пунктов, а остальные генерировать «на лету» без сохранения.

Аналогия: представьте библиотеку, где вместо того, чтобы копировать каждую книгу в отдельный ящик, вы храните только 10 самых часто выдаваемых книг в отдельном ящике, а остальные берёте из основной полки по запросу. Ящики (файлы) быстро открываются, а полка (база данных) справляется с редкими запросами.


2. Как добавить параметр в компонент меню

2.1. Где искать вызов меню

Обычно меню выводится в шаблонах через <?$APPLICATION->IncludeComponent( "bitrix:menu", "top", array( // параметры ), false );?>

2.2. Минимальный набор параметров с CACHE_SELECTED_ITEMS

<?$APPLICATION->IncludeComponent(
    "bitrix:menu",
    "top",
    array(
        "ROOT_MENU_TYPE" => "top",
        "MAX_LEVEL"      => "2",
        "CHILD_MENU_TYPE"=> "left",
        "USE_EXT"        => "Y",
        "DELAY"          => "N",
        "ALLOW_MULTI_SELECT" => "N",
        // *** новый параметр ***
        "CACHE_TYPE"          => "A",
        "CACHE_TIME"          => "3600",
        "CACHE_SELECTED_ITEMS"=> "30",   // хранить лишь 30 вариантов
    ),
    false
);?>```

> **Важно:** значение `30` – пример. Подбирайте его, исходя из количества «горячих» путей в вашем меню. Для небольших сайтов достаточно 10‑20, для крупных интернет‑магазинов – 50‑100.

#### 2.3. Что происходит после изменения  

1. При первом запросе к меню генерируется кэш‑файл `menu_top_0_0.php` (для корневого уровня) и **до N** файлов для выбранных пунктов.  
2. При изменении URL (например, переход от `/catalog/phones/` к `/catalog/tablets/`) Битрикс проверит, есть ли уже кэш‑файл для этой комбинации. Если количество уже превышает N, файл **не будет создан**, а меню соберётся «на лету».  
3. Файлы, которые не попали в топ‑N, автоматически удаляются при очередной чистке кэша (по времени `CACHE_TIME`), что держит папку в порядке.

---

### 3. Как определить оптимальное значение N  

| Сценарий | Пример количества «горячих» пунктов | Рекомендованное N |
|----------|----------------------------------------|-------------------|
| **Лендинг с 5‑ю пунктами** | 5 | 5‑10 |
| **Корпоративный сайт с 20‑м пунктами** | 20 | 20‑30 |
| **Интернет‑магазин с 200‑м пунктами** | 200 (только 30‑50 самых популярных) | 30‑50 |
| **Marketplace с тысячами категорий** | 5000+ (многие редкие) | 100‑150 |

**Методика подбора:**  

1. Откройте **Статистику** в админке Битрикса → «Посещаемость страниц».  
2. Сформируйте список URL‑ов, которые встречаются чаще всего (топ‑N).  
3. Выберите N, покрывающее  80‑90 % всех запросов.  

> **Плюс:** если после внедрения вы всё ещё видите рост файлов, уменьшите N или проверьте, не включён ли в кэш слишком много уровней (`MAX_LEVEL`).  

---

### 4. Как проверить, что кэш уменьшился  

1. **До изменения** – зайдите в `bitrix/cache/` и посчитайте файлы в подкаталоге `menu_`.  
2. **После изменения** – выполните несколько запросов к разным разделам сайта, затем снова посчитайте.  

```bash
find /path/to/bitrix/cache/ -type f -name "menu_*.php" | wc -l

Ожидаемый результат: количество файлов должно уменьшиться в 3‑5 раз (в зависимости от выбранного N).


5. Возможные подводные камни и как их избежать

Проблема Причина Как исправить
Меню не меняется после правок Кэш не сброшен В админке → «Настройки» → «Очистка кэша», либо вызвать \Bitrix\Main\Data\Cache::clearAll(); вручную
Ошибка «Cannot open cache file» Доступ к папке ограничен Установите права 755 для bitrix/cache/ и 775 для подпапок
Слишком маленькое N → «медленное» меню в редких разделах Компонент каждый раз генерирует меню без кэша Увеличьте N до уровня, когда редкие разделы уже попадают в кэш, или включите CACHE_TYPE => "Y" для постоянного кэширования
Неправильный синтаксис массива Пропущена запятая/кавычка Проверьте PHP‑синтаксис, используйте IDE с подсветкой ошибок

6. Как сочетать CACHE_SELECTED_ITEMS с другими оптимизациями

Техника Что делает Как комбинировать
Сжатие HTML‑вывода (ob_gzhandler) Уменьшает размер передаваемых данных Не влияет на кэш‑файлы, но ускоряет загрузку страниц
Модуль «Оптимизация изображений» Автоматически ресайзит и кеширует картинки Кэш‑файлы меню остаются небольшими, а изображения быстрее отдаются
Redis‑кэш для запросов к базе Хранит результаты SQL‑запросов в памяти Позволяет уменьшить CACHE_TIME без потери скорости
Lazy‑load для JS/CSS Загружает скрипты только при необходимости Сокращает время первой отрисовки, а кэш‑файлы меню уже ускоряют построение DOM

7. Пример полного конфигурационного файла шаблона

<?php
$menuParams = array(
    "ROOT_MENU_TYPE"      => "top",
    "MAX_LEVEL"           => "2",
    "CHILD_MENU_TYPE"     => "left",
    "USE_EXT"             => "Y",
    "DELAY"               => "N",
    "ALLOW_MULTI_SELECT" => "N",
    "CACHE_TYPE"          => "A",
    "CACHE_TIME"          => "3600",
    // *** главное ***
    "CACHE_SELECTED_ITEMS"=> "50",   // хранить 50 самых популярных комбинаций
);
$APPLICATION->IncludeComponent(
    "bitrix:menu",
    "top",
    $menuParams,
    false
);
?>

Сохраните файл, очистите кэш и проверьте, как изменилось количество файлов.


8. Как мониторить состояние кэша в реальном времени

  1. Битрикс‑мониторинг – модуль «Система → Мониторинг», где можно добавить график количества файлов в папке cache/menu_.
  2. Скрипт‑cron – раз в час запускать:
<?php
$path = $_SERVER["DOCUMENT_ROOT"] . "/bitrix/cache/";
$files = glob($path . "menu_*.php");
echo "Файлов кэша меню: " . count($files);
?>

Отправляйте результат в лог или в Telegram‑бот для быстрого реагирования.


9. Как правильно документировать изменения

Шаг Действие Где фиксировать
1 Добавлен параметр CACHE_SELECTED_ITEMS в шаблон top Git‑коммит с описанием «Оптимизация кэша меню»
2 Установлен N = 50 после анализа статистики Тикет в системе управления задачами
3 Проведена очистка кэша и проверка количества файлов Отчёт в Confluence/Google Docs
4 Настроен мониторинг количества файлов Скриншот графика в мониторинге

Эти записи помогут быстро восстановить прежнюю конфигурацию, если что‑то пойдёт не так.


Практика для закрепления

  1. Определите N

    • С помощью встроенной статистики Битрикса найдите топ‑10 самых посещаемых URL‑ов вашего сайта.
    • Выберите значение CACHE_SELECTED_ITEMS, покрывающее не менее 85 % всех запросов.
  2. Внедрите параметр

    • Откройте шаблон меню, добавьте CACHE_SELECTED_ITEMS с выбранным числом.
    • Очистите кэш через админку и выполните 5‑10 переходов по разным разделам.
  3. Измерьте эффект

    • Посчитайте количество файлов menu_*.php до и после изменения (используйте команду find … | wc -l).
    • Сформулируйте, насколько уменьшилось время генерации страницы (можно измерить с помощью Chrome DevTools → Network → “Load”).
  4. Проверьте на ошибку

    • Сымитируйте ситуацию, когда пользователь переходит в редкий раздел, который не попал в топ‑N.
    • Убедитесь, что меню отображается корректно, а кэш‑файл не создаётся.
  5. Настройте мониторинг

    • Добавьте в cron‑задачу скрипт, выводящий количество файлов кэша меню, и настройте оповещение в Telegram при превышении порога (например, 200 файлов).

Выполнив эти упражнения, вы не только поймёте, как работает CACHE_SELECTED_ITEMS, но и получите практический набор инструментов для контроля и поддержания «здорового» кэша меню на любом сайте, работающем на Битриксе.


Продолжайте экспериментировать: меняйте MAX_LEVEL, комбинируйте с CACHE_TIME и наблюдайте, как каждый параметр влияет на производительность. Так вы станете настоящим мастером оптимизации Битрикса и сможете быстро реагировать на рост нагрузки без лишних расходов на инфраструктуру.


Если нужен быстрый хостинг для тестов, обратите внимание на 🏰 VDSina – надёжный провайдер с гибкой тарифной сеткой. Подробнее о тарифах можно узнать здесь.


CamZamZam - онлайн фото с вебкамеры с эффектами
Cartoon Network: игры с персонажами
Чат рулетка в 2026: будущие функции
Эксперт по доменным стратегическим решениям
Хостинг для e-commerce проектов
Как играть в слоты
Как настроить CDN для сайта на хостинге Host.bg
Как настроить SSL-сертификат для сайта на Host.bg
Как оптимизировать производительность сайта с хостингом Host.bg
Как выбрать правильный хостинг для вашего сайта
Какие бывают ЛОР болезни у детей
Кассовые терминалы с оплатой картами
LOL куклы витрина детская
Лучшие видеорегистраторы для водителей
Онлайн QR-код сканер
Онлайн-связь
Оптимизация производительности баз данных на хостинге Host.bg
Основы настройки веб-хостинга: что вам нужно знать
Партнёрская программа без блога: как получать трафик из Telegram
Профессиональные хитрости для пользователей хостинга Host.bg
Регистрация ИП в Москве для иностранных граждан
Сравнение хостинга Host.bg с другими провайдерами
Субтитры — нет, уши — включены: погружение в английский за 5 минут
Сумки с бусинами
Техника для строительства загородных трасс
ТОП-10 VPS для разработчика: рейтинг серверов под рабочие задачи
WordPress блог для бизнеса
рейтинг хостингов 2026 Быстрые VDS серверы