You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React Query中staleTime大于cacheTime时会发生什么?

React Query中staleTime长于cacheTime的行为解析

先明确两个核心配置的作用边界:

  • staleTime:决定数据从「新鲜」变为「过时」的时长,新鲜状态下不会自动发起服务器请求
  • cacheTime:控制数据在无组件订阅时,留存于缓存中的时长,超时后会被垃圾回收机制清除

针对你设置staleTime: 600000(10分钟)、cacheTime: 300000(5分钟)的场景,实际行为是:

  • 前5分钟:数据处于新鲜状态,只要有组件在使用该数据,不会触发请求;如果期间没有组件订阅,数据会在第5分钟到期时被缓存清除
  • 第6分钟时:若此时没有组件挂载使用该数据,缓存已经为空——哪怕staleTime还没到,因为cacheTime的优先级是「缓存是否保留」,和数据是否新鲜无关
  • 这时如果重新挂载组件,由于缓存中没有数据,React Query会直接发起请求,staleTime的规则无法生效(根本没有数据可判断新鲜度)

你的误解在于混淆了两者的作用前提:staleTime的生效必须建立在数据仍存在缓存中的基础上。当cacheTime更短且无组件维持缓存引用时,数据会先被清理,staleTime自然无法发挥作用。

内容的提问来源于stack exchange,提问作者Terrie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 03:41:30