Кэширование на стороне сервера Plotly da sh - PullRequest
1 голос
/ 04 августа 2020

Я использую кеширование на стороне сервера в своем приложении dash, и я следовал примеру 4 в документации . Я использую это для запроса и обработки «глобальных» данных, затем этот подготовленный набор данных распределяется между различными компонентами приложения.

Это отлично работает; данные загружаются, когда я загружаю или обновляю sh приложение.

Но данные также перезагружаются, когда я выхожу из приложения на пару минут и возвращаюсь (например, при посещении другой вкладки в браузере без закрытия приложение). Так что меня смущает то, как работают эти сеансы и почему кажется, что они так быстро заканчиваются. Как можно это контролировать? Например, увеличивая допустимое время простоя или строго обновляя сеанс при загрузке / обновлении страницы sh.

1 Ответ

1 голос
/ 04 августа 2020

Мемоизированные данные обновляются, когда происходит одно из трех:

  1. Изменяются значения входных аргументов
  2. Срок действия кеша истек
  3. Кэш очищен

В примере в вашей ссылке новый uuid генерируется при каждой загрузке страницы. Этот идентификатор передается в качестве аргумента мемоизированной функции, и, таким образом, данные будут обновляться при загрузке страницы из-за (1).

Если прошло больше предопределенного тайм-аута ( значение по умолчанию 300 секунд )), данные будут обновлены согласно (2). Вероятно, поэтому вы столкнулись с тем, что « данные также перезагружаются, когда я выхожу из приложения на пару минут и возвращаюсь ». Вы можете настроить тайм-аут в соответствии с вашими потребностями с помощью параметра CACHE_DEFAULT_TIMEOUT объекта Cache или с помощью ключевого слова timeout декоратора memoize.

Кроме того, кеш будет обновлен, если данные не может быть найден (3). Помимо ручного удаления, это может произойти, если в кеше не хватает места. По умолчанию 500 элементов кэша сохраняется . Это число можно изменить с помощью аргумента CACHE_THRESHOLD объекта Cache.

...