Дата последнего изменения: 24.01.2024
Иногда возникает задача кешировать данные, которые связаны с текущим пользователем. Конечно, один из вариантов, это использовать сессию, но это не всегда подходит, так как:
Один из альтернативных вариантов, это создать кеш, который привязан к session_id(). По сути, это простая имитация сессии. С версии main 20.5.400 есть новая возможность.
Пример:
$localStorage = \Bitrix\Main\Application::getInstance()->getLocalSession('someCategory'); if (!isset($localStorage['productIds'])) { $localStorage->set('productIds', [1, 2, 100]); $localStorage->set('price', 42); } var_dump($localStorage->get('productIds'));
Принцип работы достаточно прост: при вызове \Bitrix\Main\Application::getLocalSession($name)
всегда возвращается экземпляр \Bitrix\Main\Data\LocalStorage\SessionLocalStorage
. Это элемент кеша, который автоматически опирается на session_id().
При этом, если это первое обращение и данных нет, то будет создан пустой контейнер, если же в кеше были данные по $name, то контейнер будет наполнен данными.
Все SessionLocalStorage сохраняются в конце хита ядром автоматически.
Документация по теме: |