使用NSURLCache的AFNetworking 2不适用于ios8

时间:2014-09-29 11:12:49

标签: caching ios8 afnetworking-2 nsurlcache

我使用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个请求中。

0 个答案:

没有答案