Ios NSURLSession';s 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和用尽所有选项,但张贴在这里。。。这就是:

我正在尝试将
NSURLCache
NSURLSession
结合作为底层缓存机制来实现。使用Charles和simple
println()
我观察到,无论我做什么,我的应用程序都会继续返回服务器并重新请求以前的请求

我验证了我的服务器是否一致地发送以下标头:

 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线程
设置:Xcode6.1,Swift,iOS8+

编辑:我将一个基本示例推送到github以显示我的问题:


检查一下,让我知道我做错了什么

我看到您的GET请求有参数,因此我认为我们面临同样的情况

我找到了一个覆盖NSURLCache的解决方案,进行了一些调整并访问了底层数据库,您可以在这里看到:


我们能看到一个完整的小代码示例来说明问题吗?例如,了解您实际上是如何发出请求和创建会话(特别是会话配置对象)的将很有帮助。您请求的URL是什么?你用的是GET还是POST?您能从日志中看到客户端正在向服务器发送什么吗?有没有防火墙会造成问题?@MattGibson:我在github中添加了一个示例应用程序。过来看!谢谢哦,有趣!谢谢你的信息,我一定会查出来的!