我使用AFNetworking 2
并使用SharedInstance().GET
方法请求日期,但缓存在iOS 8上不起作用。即使在离线模式下,它也会一次又一次地请求它。但它在iOS 7上运行良好。我在模拟器和真实设备中进行了测试。
我的网络服务器上的Max-age标头:
Cache-Control:max-age=21600
应用程序didFinishLaunchingWithOptions
方法的缓存设置:
let urlCache = NSURLCache(memoryCapacity: 1024*1024*4, diskCapacity: 1024*1024*5, diskPath: nil);
NSURLCache.setSharedURLCache(urlCache)
另外,我检查可达性并将cacheMode设置为离线
override func dataTaskWithRequest(request: NSURLRequest!, completionHandler: ((NSURLResponse!, AnyObject!, NSError!) -> Void)!) -> NSURLSessionDataTask! {
let modifiedRequest : NSMutableURLRequest = request.mutableCopy() as NSMutableURLRequest
let reachability : AFNetworkReachabilityManager = AFNetworkReachabilityManager.sharedManager()
if (!reachability.reachable) {
modifiedRequest.cachePolicy = NSURLRequestCachePolicy.ReturnCacheDataElseLoad
}
return super.dataTaskWithRequest(modifiedRequest, completionHandler: completionHandler)
}
我做错了什么?它是iOS 8的bug还是别的什么?
一些更新:
我试图监控缓存大小:
println("disk \(NSURLCache.sharedURLCache().currentDiskUsage) of \(NSURLCache.sharedURLCache().diskCapacity)")
println("memory \(NSURLCache.sharedURLCache().currentMemoryUsage) of \(NSURLCache.sharedURLCache().memoryCapacity)")
在sharedInstance().GET
请求后,缓存在iOS8上不会增长。缓存仅通过setImageWithURLRequest
类的UIImageView+AFNetworking
方法增长。在iOS7中,它的两种方式都很好。我认为问题可能出在iOS 8中的NSURLSessionDataTask
个请求中。