我希望有人能够摆脱几件事情我一直在研究一些光,但不能使上多大进展。
我想利用NSURLCache的优势来换取API调用我做iOS应用内缓存的响应。 当设备在线,我想返回缓存的响应,如果它足够近,否则从远程读取。 当设备处于脱机状态,我想立即返回缓存响应(如果有的话),无论它的年龄。
我使用AFNetworking
。 API调用,我正在做是我控制的服务器。 协议是HTTPS。 所述Cache-Control
响应头目前"max-age=0, public"
。 我目前没有设置高速缓存相关请求头(应该吧?)。 我设置请求的缓存策略是NSURLRequestReturnCacheDataDontLoad
脱机时,使用缺省NSURLRequestUseProtocolCachePolicy
时在线。 我可以看到在默认情况下,请求及其响应Cache.db
在磁盘上。 然而,当我下线的所有请求失败(无缓存的响应(尽管他们看上去已经被缓存)正在使用/返回。
每http://nshipster.com/nsurlcache/我初始化sharedURLCache
在didFinishLaunchingWithOptions
并设置AFNetworking setCacheResponse
块是这样的:
NSMutableDictionary *mutableUserInfo = [[cachedResponse userInfo] mutableCopy]; NSMutableData *mutableData = [[cachedResponse data] mutableCopy]; NSURLCacheStoragePolicy storagePolicy = NSURLCacheStorageAllowed; return [[NSCachedURLResponse alloc] initWithResponse:[cachedResponse response] data:mutableData userInfo:mutableUserInfo storagePolicy:storagePolicy];
我读过关于这个专题的这些和其他职位:
http://petersteinberger.com/blog/2012/nsurlcache-uses-a-disk-cache-as-of-ios5/ http://blackpixel.com/blog/2012/05/caching-and-nsurlconnection.html
我不知道是否有任何人使用的标准前,已成功实现了这一功能NSURLCache
(也有意参与成功案例SDURLCache
作为iOS5的磁盘缓存的支持,因此,但彼得S.说SDURLCache
不再需要,也就是我想使用内置的缓存,默认值)。
提前致谢!