Ios Alamofire 4:强制存储响应并从磁盘缓存中再次获取

Ios Alamofire 4:强制存储响应并从磁盘缓存中再次获取,ios,swift,alamofire,Ios,Swift,Alamofire,我使用的API有时相当慢,但我知道对于每个唯一的URL,我总是会得到相同的JSON响应。因此,完美的永久存储在缓存中,这样至少下次你打开应用程序时,它会立即出现 看起来很简单,但却没有达到预期效果 进口阿拉莫菲尔 类视图模型{ 私有let sessionManager:sessionManager 初始化{ let configuration=URLSessionConfiguration.default configuration.requestCachePolicy=.returnCache

我使用的API有时相当慢,但我知道对于每个唯一的URL,我总是会得到相同的JSON响应。因此,完美的永久存储在缓存中,这样至少下次你打开应用程序时,它会立即出现

看起来很简单,但却没有达到预期效果

进口阿拉莫菲尔 类视图模型{ 私有let sessionManager:sessionManager 初始化{ let configuration=URLSessionConfiguration.default configuration.requestCachePolicy=.returnCacheDataElseLoad configuration.urlCache=urlcachemorycapacity:20*1024*1024,diskCapacity:200*1024*1024,diskPath:cache configuration.timeoutitervalforrequest=15 sessionManager=Alamofire.sessionManager配置:配置 } func getData{ 打印开始! 让url=URLstring:https://www.example.com/data/2020.json! 让签名=ABC let request=sessionManager.requesturl,标题:[签名:签名]。验证 让task=request.responseJSON{response in 打印完毕! } } } 它正在做请求,我正在完成!响应很好,但仍然需要很多秒,即使我多次运行getData函数。为什么它不立即返回缓存的响应

响应的缓存控制头的值为private,max age=31536000


我正在使用Alamofire 4.9.1。

我想我找到了答案。至少这是可行的。所以,我希望请求会自动返回缓存数据,如果它在那里,但它似乎不是这样工作的?但是我可以手动检查缓存的内容

类视图模型{ 私有let缓存:URLCache 私有let sessionManager:sessionManager 初始化{ cache=urlcachemorycapacity:20*1024*1024,diskCapacity:200*1024*1024,diskPath:nil let configuration=URLSessionConfiguration.default configuration.requestCachePolicy=.returnCacheDataElseLoad configuration.urlCache=cache configuration.timeoutitervalforrequest=15 sessionManager=Alamofire.sessionManager配置:配置 } func getData{ 让url=URLstring:https://www.example.com/data/2020.json! var urlRequest=URLRequesturl:url urlRequest.addValuesignature,forHTTPHeaderField:签名 如果let data=cache.cachedResponsefor:urlRequest?.data{ //对缓存的数据执行一些操作 }否则{ //做请求 让request=sessionManager.requesturlRequest.validate 让task=request.responseJSON{response in 打印完毕! } } } }