Plotly dash 服务器端缓存

Plotly dash server side caching

我在我的 dash 应用程序中使用服务器端缓存,并且我已经按照 documentation 中的示例 4 进行操作。我正在使用它来查询和处理“全局”数据,然后在应用程序的不同组件之间共享这个准备好的数据集。

这很好用;当我加载或刷新应用程序时加载数据。

但是当我离开应用程序几分钟然后回来时(例如,在不关闭应用程序的情况下访问浏览器中的另一个选项卡),数据也会重新加载。所以我感到困惑的是这些会话是如何工作的,以及为什么它们似乎很快就会过期。控制这个的方法是什么?例如。通过增加允许的空闲时间或严格更新页面 load/refresh.

上的会话

记忆数据在以下三种情况之一发生时刷新,

  1. 输入参数的值发生变化
  2. 缓存已过期
  3. 缓存已清除

在您 link 的示例中,每次加载页面时都会生成一个新的 uuid。此 id 作为参数传递给 memoized 函数,因此由于 (1),数据将在页面加载时刷新。

如果超过预定义的超时时间 (default value is 300 seconds)),数据将按照 (2) 进行刷新。这可能就是您遇到“当我离开应用程序几分钟然后回来时数据也会重新加载”的原因。您可以通过 Cache 对象的 CACHE_DEFAULT_TIMEOUT 参数或通过 memoize 装饰器的 timeout 关键字根据您的需要调整超时。

另外,如果找不到数据(3),将刷新缓存。除了手动删除之外,如果缓存用完 space,也会发生这种情况。默认情况下,500 cache elements are kept。这个数字可以通过 Cache 对象的 CACHE_THRESHOLD 参数来调整。