如何在应用处于离线状态时使用Alamofire获取缓存响应?

Jak*_*lář 8 caching ios nsurlrequestcachepolicy swift alamofire

在我获得response通过Alamofire后,在某些情况下,实现数据库自己管理本地存储(文件等)可能有点矫枉过正.

我知道Alamofire requestCachePolicy并且它已经缓存了响应(基于cache-controls max-age),但这更多地与减少请求数量/改善在线体验有关.

但是当我通过Alamofire没有连接时,是否可以使用缓存的响应? (Alamofire是否提供某种方便的方法来处理这个问题)

小智 1

为了实现这种行为。您应该尝试修改即将执行的“正在进行的”请求并设置标志returnCacheDataDontLoadreturnCacheDataElseLoad以获得所需的行为。(取决于您的需求)

就像是:

var req = URLRequest(url: URL(string: "http://foo.bar.com/res")!)
if noInternet {
    req.cachePolicy = .returnCacheDataDontLoad
}
Run Code Online (Sandbox Code Playgroud)

还要确保应用程序与服务器协商的缓存策略,以防您也需要调整它。

希望能帮助到你!:)