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