gpt4 book ai didi

caching - Apollo Client v3 在给定时间段后删除缓存条目

转载 作者:行者123 更新时间:2023-12-04 13:13:32 26 4
gpt4 key购买 nike

我想知道是否有办法在特定时间段(例如 24 小时)后使缓存的项目过期。
我知道 Apollo Client v3 提供了 cache.evictcache.gc 等方法,这是一个好的开始,我已经在使用;但是,我想要一种在给定时间段后删除缓存项的方法。
我现在正在做的是向 Apollo 模式中的每个对象添加一个 TimeToLive 字段,当后端返回一个对象时,该字段填充当前时间 + 24 小时(即 24 小时时间)。然后当我在前端查询数据时,我检查返回数据的 TimeToLive 字段是否在 future (如果不是,则表示数据肯定是从缓存中检索的,在这种情况下我调用 refetch 函数, 这会强制查询从服务器获取数据。然而,这似乎不是最好的做事方式,主要是因为我必须遍历返回的数据中的每个结果,检查是否有任何返回的对象已过期;如果是,则重新获取所有内容。
我想到的另一个解决方案是使用类似 React Native Queue 的东西,并有一个后台任务定期检查缓存和已过期的已删除项目。但同样,我并没有完全接受这个解决方案。
这里有一点上下文:我正在构建一个 cooking /食谱应用程序 - 食谱/帖子缓存在设备上;但是,我担心的是用户可以删除帖子,但是缓存了该帖子的其他所有人仍然可以看到它,因此通过使缓存的项目过期,他们至少只能看到几个小时在它被移除之前。然而,它们可能是一起完成这一切的更好方法,即让服务器与缓存项目联系客户(尽管在撰写本文时我想不出任何低提升解决方案)

最佳答案

apollo-invalidation-policies用 InvalidationPolicyCache 替换 Apollo 客户端 InMemoryCache,并且在 typePolicies 中您可以指定 timeToLive 字段。如果对象在其 TTL 之外被访问,它们将被驱逐并且不返回任何数据。

关于caching - Apollo Client v3 在给定时间段后删除缓存条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62499673/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com