给定时间段后,Apollo Client v3删除缓存条目

我想知道是否有一种方法可以在特定时间段(例如24小时)之后使缓存的项目过期。

我知道Apollo Client v3提供了cache.evictcache.gc之类的方法,这是一个很好的开始,并且我已经在使用;但是,我想要一种在给定时间段后删除缓存项的方法。

我目前正在做的是向我的Apollo模式中的每个对象添加一个TimeToLive字段,并且当后端返回一个对象时,该字段将填充当前时间+ 24小时(即24小时内的时间) )。然后,当我在前端查询数据时,请检查,以查看返回的数据的TimeToLive字段是否将来(如果不是,则表示确实从缓存中检索了数据,在这种情况下,我称{{ 1}}函数,该函数强制查询从服务器获取数据,但是,这似乎并不是最好的处理方式,主要是因为我必须遍历返回的数据中的每个结果anch检查是否存在任何返回的对象已过期;如果是这样,则将重新获取所有内容。

我想到的另一个解决方案是使用React Native Queue之类的东西,并具有一个后台任务,该任务定期检查缓存和已过期的已删除项目。但同样,我对这种解决方案并不完全满意。

这里有一点上下文:我正在构建一个烹饪/食谱应用程序-食谱/帖子被缓存在设备上;但是,我担心的是,用户可以删除帖子,但是缓存了该帖子的其他所有人仍然可以看到该帖子,因此,至少使该缓存项过期后,他们只能看到几个小时在将其删除之前。但是,它们可能是更好的方法,例如让服务器与客户联系缓存的内容(尽管在撰写本文时我想不到任何低空解决方案)

iCMS 回答:给定时间段后,Apollo Client v3删除缓存条目

Array.reduce()用InvalidationPolicyCache替换Apollo客户端InMemoryCache,并在typePolicies中可以指定timeToLive字段。如果访问对象超出其TTL,则会将其驱逐,并且不会返回任何数据。

本文链接:https://www.f2er.com/2087492.html

大家都在问