我正在使用AFURetworking和NSURLCache。使用NSURLRequestUseProtocolCachePolicy
创建请求。应用程序收到带标题的回复:
Etag = "1398684731";
Cache-Control = "public";
一切都很完美。但现在我需要添加离线模式。
它应该如何运作:
Etag
相同,则会下载Etag
个新数据 - 缓存响应
用来)。 问题是在离线模式下请求失败。
我尝试使用各种Cache-Control
选项来解决此问题,但似乎它不会以这种方式工作。
我在这里找到了可能的解决方案https://stackoverflow.com/a/15885318/3140927。它应该有效,但它不是很优雅,我认为去年可能会发生一些变化。
此外,我发现" NSURLCache并非用于显式离线方案,而且它旨在加速Safari,不应用于手动下载"。 SDURLCache会更好地用于我的目的吗?
那么什么是实现离线模式的最佳方式?
答案 0 :(得分:1)
听起来您希望请求成功,即使缓存显示数据已过期且应从服务器检索。您可能有幸为某些请求设置缓存策略(在线与离线的不同策略),而您宁愿使用陈旧数据而不是失败。
很棒的链接就在这里 - > SDURLCache with AFNetworking and offline mode not working
答案 1 :(得分:0)
今天我尝试用这篇文章解决完全相同的问题并且效果很好:http://blog.originate.com/blog/2014/02/20/afimagecache-vs-nsurlcache/。关键在于子类NSURLCache,使您的缓存独立于响应头。
我在示例中发现了几个错误类型,但希望它对您有所帮助!