Ios NSURLSession';s NSURLCache未按预期工作
我看到奇怪的行为时,使用NSURLCache和用尽所有选项,但张贴在这里。。。这就是: 我正在尝试将Ios NSURLSession';s NSURLCache未按预期工作,ios,swift,nsurlsession,nsurlcache,Ios,Swift,Nsurlsession,Nsurlcache,我看到奇怪的行为时,使用NSURLCache和用尽所有选项,但张贴在这里。。。这就是: 我正在尝试将NSURLCache与NSURLSession结合作为底层缓存机制来实现。使用Charles和simpleprintln()我观察到,无论我做什么,我的应用程序都会继续返回服务器并重新请求以前的请求 我验证了我的服务器是否一致地发送以下标头: Cache-Control:public, max-age=31449600 Content-Length:74289 Content-Type:im
NSURLCache
与NSURLSession
结合作为底层缓存机制来实现。使用Charles和simpleprintln()
我观察到,无论我做什么,我的应用程序都会继续返回服务器并重新请求以前的请求
我验证了我的服务器是否一致地发送以下标头:
Cache-Control:public, max-age=31449600
Content-Length:74289
Content-Type:image/jpeg
ETag:"abcdf"
Expires:Sun, 03 Jan 2016 20:58:01 GMT
Last-Modified:Sat, 09 Nov 2013 08:05:53 GMT
但当我提出以下要求时:
let req = NSURLRequest(URL: NSURL(string: URLString)!, cachePolicy: .ReturnCacheDataElseLoad, timeoutInterval: 15)
NSURLSession
的willCacheResponse:
委托方法根本不会被调用:
func URLSession(session: NSURLSession, dataTask: NSURLSessionDataTask, willCacheResponse proposedResponse: NSCachedURLResponse, completionHandler: (NSCachedURLResponse!) -> Void) {
但是,如果只请求NSURLRequest(URL:NSURL(string:URLString)!)
而不指定特定的cachePolicy
,则会调用willCacheResponse:
。然而,下一次发出相同的请求时,应用程序将返回服务器
我没有在任何NSURLSession委托方法中修改任何响应对象,我的请求都是HTTPGET
我错过了什么
我在NSURLCache上读到了很多内容:
- 各种其他的SO线程
检查一下,让我知道我做错了什么 我看到您的GET请求有参数,因此我认为我们面临同样的情况 我找到了一个覆盖NSURLCache的解决方案,进行了一些调整并访问了底层数据库,您可以在这里看到:
我们能看到一个完整的小代码示例来说明问题吗?例如,了解您实际上是如何发出请求和创建会话(特别是会话配置对象)的将很有帮助。您请求的URL是什么?你用的是GET还是POST?您能从日志中看到客户端正在向服务器发送什么吗?有没有防火墙会造成问题?@MattGibson:我在github中添加了一个示例应用程序。过来看!谢谢哦,有趣!谢谢你的信息,我一定会查出来的!