如果 staleTime 比 cacheTime 长,例如 staleTime 为 10 分钟,cacheTime 为 5 分钟,会发生什么情况?我认为即使cacheTime在6分钟后无效,staleTime仍然有效,因此它不会调用服务器来获取数据。
然而,我发现一篇文章说,如果cacheTime无效,那么仍然新鲜的数据将被删除。如果 staleTime 比 cacheTime 长,那么 staleTime 是否不会按我的预期工作?
staleTime是两个完全不同的时代,毫无cacheTime关联。它们有两个不同的目的,并且可以是两个不同的时间 - 每个时间都可以比另一个更小或更大,这并不重要。
我将在这里复制我的博客文章中的部分:
StaleTime:查询从新鲜状态转变为过时状态的持续时间。只要查询是新鲜的,数据将始终只从缓存中读取 - 不会发生网络请求!如果查询过时(默认情况下是:立即),您仍将从缓存中获取数据,但在某些条件下可能会发生后台重新获取。
这里首先要注意的是,即使staleTime过去了,也不会立即有请求。staleTime只是说:嘿,我们在缓存中的数据不再新鲜,因此我们可能会在后台刷新它。但要发生后台刷新,它需要一个“触发器”:组件安装、窗口焦点、网络重新连接。
CacheTime:从缓存中删除非活动查询之前的持续时间。默认为 5 分钟。一旦没有注册观察者,即当使用该查询的所有组件都已卸载时,查询就会转换为非活动状态。
cacheTime只要您使用查询,就不执行任何操作。您可以打开一个网页并永远在该页面上工作 - React Query 不会删除该数据,因为这意味着屏幕将转换为加载状态。那会很糟糕。cacheTime是关于垃圾收集 - 删除不再使用的数据。gcTime这就是为什么我们会在下一个主要版本中将此选项重命名为。
来自评论:
让stateTime比cacheTime长是没有意义的。
是的,如果你愿意的话,确实如此。你甚至可以拥有staleTime: Infinity,cacheTime: 0。这基本上意味着:如果您有缓存数据,则永远不要重新获取数据,但一旦不再使用它,就立即从缓存中删除数据。
| 归档时间: |
|
| 查看次数: |
1811 次 |
| 最近记录: |