Перейти к основному содержимому

Работа с кэшем в 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
Также данные будут запрошены и записаны в кэш, если при инициализации SDK был передан флаг webBuilder