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

Apollo Client默认查询缓存TTL是多少

Apollo Client 内存缓存默认TTL与同步机制说明

默认配置下的Apollo Client InMemoryCache 不存在内置的固定TTL(过期时间),你提到的默认缓存策略为cache-first的判断是完全准确的。作为纯内存实现的缓存,它唯一的自动清空时机是页面刷新、应用上下文被销毁时整个缓存被内存回收,不存在按缓存条目定时过期、固定间隔拉取最新数据的逻辑。

对走默认cache-first策略的查询,Apollo的判断逻辑非常直接:只要缓存中存储了该查询(匹配查询语句、查询变量)的完整结果,就会直接返回缓存值,不会主动发起网络请求拉取最新数据,不存在“更新后等待固定时长才能同步到客户端”的默认规则。

客户端拿到最新服务端数据的时机完全由具体触发行为决定,没有固定等待周期,常见触发场景包括:

  • 主动触发查询重抓:调用查询实例的refetch()方法、将对应查询的fetchPolicy设置为cache-and-network/network-only、查询关联变量变更触发新网络请求时,服务端返回的新数据会直接写入缓存,所有依赖该数据的组件会立即拿到更新后的值。
  • 关联操作自动归一化更新:当其他query、mutation、subscription请求返回的数据包含和缓存中已有实体匹配的标识(即__typename+id字段组合一致),Apollo会自动把新返回的字段合并到对应缓存实体中,整个过程实时生效,无额外延迟。
  • 手动操作缓存:调用cache.writeQuery、cache.modify、cache.evict等API手动修改、清理缓存时,变更会立即同步到所有订阅对应缓存数据的组件。

如果你需要TTL类的自动过期能力,默认配置不直接提供,需要自行实现:可以通过封装高阶逻辑记录缓存写入时间主动触发重抓、定期调用evict清理指定缓存条目,或是使用带TTL配置的缓存持久化插件实现。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 21:36:38