Дополнительно отключаем кэширование прав в меню через MENU_CACHE_USE_USERS => N
Дата публикации: 24.06.2026

Дополнительно отключаем кэширование прав в меню через MENU_CACHE_USE_USERS => N

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

Что происходит, когда в меню учитываются права отдельных пользователей?

Меню в 1С‑Битрикс – это не просто список ссылок, а динамический элемент, который подбирает пункты в зависимости от того, какие разрешения имеет текущий пользователь. По умолчанию система сохраняет в кэше не только структуру меню, но и набор прав, привязанных к каждому пользователю. При большом количестве посетителей и частых изменениях прав это приводит к избыточному кэшированию, росту потребления ОЗУ и, как следствие, к замедлению работы сайта.

В этом уроке вы узнаете, как отключить кэширование прав в меню с помощью константы MENU_CACHE_USE_USERS => N, почему это часто решает проблему «тормозит», и какие нюансы стоит учитывать, чтобы не потерять безопасность и гибкость доступа.


Почему кэширует права в меню может стать узким местом

Сценарий Что кэширует Битрикс Последствия при большом количестве пользователей
Многоуровневый доступ (администраторы, менеджеры, покупатели) MENU_CACHE_USE_USERS = Y – каждый уникальный набор прав сохраняется в отдельном кэше Появляется сотни‑тысячи небольших кэш‑файлов, каждый из которых занимает ОЗУ/диск.
Частые изменения прав (например, при подписке/отписке) Кэш не обновляется мгновенно, пользователь видит устаревшее меню Пользователь может получить доступ к запрещённым разделам или, наоборот, не увидеть нужный пункт.
Большой трафик (пары тысяч запросов в секунду) Каждый запрос проверяет кэш‑ключ, содержащий ID пользователя Время на поиск и сравнение ключей растёт, сервер начинает «запотевать».

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


Как работает константа MENU_CACHE_USE_USERS

  • Y (по умолчанию) – в кэше хранится не только структура меню, но и массив прав, привязанный к конкретному пользователю. Ключ кэша выглядит примерно так:

    menu_12345_user_67890

    где 12345 – ID меню, 67890 – ID пользователя.

  • N – кэш хранит только структуру меню, без привязки к пользователю. Ключ упрощается:

    menu_12345

    При каждом запросе система уже не ищет отдельный кэш‑файл для каждого пользователя, а проверяет права в реальном времени (это быстро, потому что права находятся в оперативной памяти).

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


Шаг‑за‑шаг: отключаем кэширование прав в меню

  1. Откройте файл php_interface/init.php (если его нет – создайте).

  2. Добавьте строку, задающую константу перед подключением ядра:

    <?php
    // Отключаем кэширование прав в меню
    define('MENU_CACHE_USE_USERS', false); // или 'N'
  3. Сохраните файл и очистите кэш сайта (в админке → «Настройки» → «Очистка кеша»).

    Если вы используете Redis или Memcached в кэш‑хранилище, перезапустите сервис, чтобы удалить старые записи.

  4. Проверьте, что кэш‑ключи упрощены. Откройте DevTools → Network → запрос к /.default/menu/… и убедитесь, что в заголовке Cache-Control нет пользовательителя user_.

  5. Тестируйте: зайдите под разными пользователями (админ, менеджер, покупатель) и убедитесь, что меню отображается корректно, а права проверяются правильно.


Что может пойти не так и как избежать проблем

Проблема Почему возникает Как решить
Меню перестаёт показывать пункты для некоторых ролей В кэше остались старые записи с правами, а новый кэш не успевает сформироваться Очистите весь кэш (php bitrix/modules/main/tools/cache.php --clear) и проверьте, что MENU_CACHE_USE_USERS действительно задан до подключения ядра.
Снижение производительности при огромных меню Отключение кэширования прав ускоряет проверку, но если меню содержит несколько тысяч пунктов, проверка прав в реальном времени может стать тяжёлой Разбейте меню на под‑меню, используйте MENU_CACHE_TIME (уменьшите время жизни кэша) и MENU_CACHE_TYPE = A (автокеширование).
Конфликт с другими модулями (например, с модулем «Интеграция с CRM») Некоторые модули могут переопределять константу в своих файлах init.php Проверьте порядок подключения файлов: ваш init.php должен быть последним в цепочке, чтобы переопределить значение.
Проблемы в мультисайтовой установке Каждый сайт может иметь собственный набор прав, а общий кэш без привязки к пользователю может «перепутать» пункты Для каждого сайта задайте отдельную константу в /.default/.settings.php через COption::SetOptionString('main', 'MENU_CACHE_USE_USERS', 'N', 'site_id').

Как измерить эффект от отключения кэширования прав

  1. Включите профайлер (/bitrix/admin/profiler.php) и зафиксируйте время выполнения запросов к меню до изменения.
  2. Отключите кэширование прав и повторите измерения.
  3. Сравните menu_load_time и memory_usage.

    Обычно вы увидите сокращение времени на 30‑50 % и уменьшение потребления ОЗУ в 2‑3 раза, особенно на серверах с ограниченными ресурсами (VDS от VDSina).


Лучшие практики при работе с кэшированием меню

Практика Описание
Устанавливайте разумный MENU_CACHE_TIME Для большинства магазинов 86400 сек (один день) – оптимальный баланс между актуальностью и нагрузкой.
Не забывайте про CACHE_TYPE A (автоматический) позволяет Битрикс самому решать, когда кэшировать, а Y (всегда) – фиксированное кэширование.
Регулярно очищайте кэш после массовых изменений прав Если вы меняете роли сразу у сотни пользователей, выполните php bitrix/modules/main/tools/cache.php --clear.
Следите за размером кэша в cache/ Если директория растёт более 5 ГБ, стоит перейти на внешнее хранилище (Redis, Memcached).
Тестируйте на стенде Прежде чем менять константу в продакшене, создайте копию сайта и нагрузите нагрузочный тест (например, с JMeter).

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

  1. Настройка
    Откройте файл php_interface/init.php вашего проекта и добавьте константу, отключающую кэширование прав в меню. После сохранения очистите кэш и проверьте, что меню отображается корректно для трёх разных ролей (администратор, менеджер, покупатель).

  2. Сравнительный тест
    С помощью встроенного профайлера измерьте время загрузки главной страницы до и после изменения константы. Запишите результаты в таблицу и сделайте вывод о приросте производительности.

  3. Анализ кэша
    Перейдите в директорию /bitrix/cache/ и найдите файлы, связанные с меню (по шаблону menu_*). Сравните количество файлов до и после отключения кэширования прав. Сколько файлов исчезло?

  4. Проверка прав
    Смените права пользователя (например, отключите у него доступ к разделу «Заказы») и сразу же проверьте, исчезнет ли пункт из меню без очистки кэша. Что происходит? Объясните, почему.

  5. Оптимизация
    Если после отключения кэширования прав меню всё ещё работает медленно, предложите два способа ускорить его (например, разбить меню на под‑меню и уменьшить MENU_CACHE_TIME). Оцените, какой из вариантов будет более эффективен в вашем случае.


Краткое резюме

  • MENU_CACHE_USE_USERS = N – отключает кэширование прав в меню, оставляя в кэше только структуру.
  • Это сокращает количество кэш‑файлов, уменьшает нагрузку на ОЗУ и ускоряет отклик сайта при большом числе пользователей.
  • Проверка прав всё равно происходит в реальном времени, поэтому безопасность не теряется.
  • Важно очистить кэш после изменения константы и проверить корректность отображения меню для всех ролей.
  • При необходимости комбинируйте с другими настройками (MENU_CACHE_TIME, CACHE_TYPE) и внешними кэш‑хранилищами (Redis, Memcached) для максимального эффекта.

Дополнительный ресурс: Если вы ищете надёжный VDS‑хостинг, который справится с высоким трафиком и позволит быстро масштабировать ресурсы, обратите внимание на VDSina hosting rel="nofollow`.

Удачной оптимизации и приятного кодинга!


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 серверы