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
相关产品推荐
相关产品推荐

