1С-Битрикс: ключ кеша и инвалидация
Ключ кеша должен различать варианты данных, а изменение источника — очищать соответствующий кеш.
Плохо
$cacheId = 'orders'; // общий для всех пользователей
Хорошо
$cacheId = hash('sha256', json_encode([
'v' => 1, 'user' => $userId,
'filter' => $normalizedFilter,
'permissions' => $permissionVersion,
], JSON_THROW_ON_ERROR));
Почему это важно
Общий ключ персональной выдачи может показать чужие данные. TTL ограничивает возраст, но не заменяет проверку прав.
Когда применять
D7 Cache, PHP 7.3+ для JSON_THROW_ON_ERROR; в примере значения userId и permissionVersion получены на сервере после авторизации. При смене прав нужна инвалидация или смена версии. Публичные каталоги могут использовать общий кеш.
Кто что делает
Человек
Определяет приватность, допустимый TTL и события обновления.
AI-агент
Формирует нормализованный ключ, настраивает Cache API и проверяет очистку после записи.
Пример применения
Личный кабинет кеширует список заказов на 30 секунд. Сохранение заказа очищает кеш владельца; отзыв прав меняет permissionVersion. Выбор Redis как движка не меняет эти правила.
Как проверить у себя
- Два пользователя не получают общую персональную выдачу.
- Изменение данных и прав обновляет результат.
Первоисточники
История изменений на GitHubДата проверки отражает содержательную сверку. Синхронизация сайта не обновляет её автоматически.