Работа с кэшем в SDK
Схема работы с кэшем в SDK
В SDK кэш реализован с использованием браузерного Web API localStorage
При инициализации SDK sigma.init({...})
базовые настройки будут автоматически добавлены в кэш. Настройки зависят от того что передано в init
.
Например, данные идентификатора пользователя: userId, profileId, deviceId.
Если передать userId в userData, в кэш будет добавлена метка времени. Эта метка времени выполнит проверку, если в SDK не передан userId более 24 часов, userId считается устаревшим и эксперименты связанные с этим userId не будут учитываться.
При инициализации можно указать время жизни кэша подробнее >.
На данном этапе SDK запрос за конфигом не делает.
Фактический запрос за конфигом и гео данными пользователя, а также запись полученных данных в кэш (с проверкой метки времени), происходят при первом вызове одного из следующих методов SDK:
await sigma.checkFlag()
await sigma.useSplitUrl()
await sigma.init({ ... webBuilder: true })
await sigma.getExperiment()
await sigma.getAllUserExperiments()
await sigma.getUserFeatureFlagsDetails()
Также данные будут запрошены и записаны в кэш, если при инициализации SDK был передан флаг webBuilder
.
Все перечисленные методы требуют данные в кэше для корректного расчета экспериментов и фича флагов.
После успешного запроса за данными, кэш считается актуальным в течение времени,
указанного в cacheTTL при инициализации SDK. По умолчанию cacheTTL равен 10 секундам.
Повторный запрос за данными и их запись в кэш будет выполнен только через cacheTTL секунд после последнего запроса (вызова одного из методов SDK указанных выше).
В случае ошибок запроса, запись ошибки будет добавлена в консоль. Однако SDK не вызовет ошибку и не повлияет на работу приложения. Если в кэше содержатся старые данные, SDK продолжит использовать их для расчетов экспериментов и фича флагов. Старые данные будут считаться актуальным cacheTTL секунд.
После внесения изменений в админ-панели, обновленный конфигурационный файл станет доступным с задержкой до 2 минут.
Вопросы по работе с кэшем в SDK
Когда получаем кэш?
Кэш создается при инициализации SDK, и если переданы определенные данные в init()
Кэш с данными конфига SDK создает при вызове одного из следующих методов SDK:
- checkFlag
- useSplitUrl
- getExperiment
- useWebBuilder
- getAllUserExperiments
Когда обновляем?
Через cacheTTL (по умолчанию 10) секунд после последнего запроса (вызова метода SDK)
Когда не можем получить?
Ошибка соединения с сервером
Как часто обновляем кэш?
Через cacheTTL (по умолчанию 10) секунд и вызове метода SDK
Как методы взаимодействуют с кэшем?
Парсят данные конфига в кэше, производят расчет экспериментов, фича флагов
Какие методы просят актуальный кэш с веб сервера?
- checkFlag
- useSplitUrl
- getExperiment
- useWebBuilder
- getAllUserExperiments
webBuilder