如何使用 Alamofire 从缓存和网络加载数据?
Posted
技术标签:
【中文标题】如何使用 Alamofire 从缓存和网络加载数据?【英文标题】:How to load data BOTH from cache and from network using Alamofire? 【发布时间】:2020-11-24 10:46:22 【问题描述】:我正在尝试使用缓存来使我的 ios 应用程序更加灵活。对于每个请求,我想做的是:
-
从缓存中返回数据(如果存在)
如果连接到互联网,则在后台从 API 加载数据
如果来自 API 的数据与缓存中的数据不同,请更新缓存
并再次返回该数据,以便刷新 UI
我知道,如果缓存中已经有一些数据并且我已连接到 Internet,则可能会连续两次调用我的响应代码,但这就是我想要的:第一组数据,可能从缓存返回的 out-of-date 立即给了我一些东西,第二组数据确保一切都是最新的。
到目前为止,我使用的所有缓存方法只能让我实现仅基于缓存年龄的 EITHER/OR 方法。现在,我正在使用AlamofireURLCache5。是否可以使用 Alamofire 5 实现这样的缓存,还是必须手动实现?
编辑:有人告诉我我正在尝试做的事情称为 Stale-While-Revalidate 类型的缓存。
【问题讨论】:
嘿,那么你用什么方法来实现这一点?? 【参考方案1】:Alamofire 仅支持URLCache
和URLSession
提供的功能。你可以在 Alamofire 上实现等价的模式,也许是在从网络更新时保持最后一个成功值的类型。
顺便说一句,您可能不希望出现“如果连接到互联网”的情况。相反,您应该只请求资源并在成功时更新。
【讨论】:
以上是关于如何使用 Alamofire 从缓存和网络加载数据?的主要内容,如果未能解决你的问题,请参考以下文章