gpt4 book ai didi

ios - NSURLSession 的 NSURLCache 没有按预期工作

转载 作者:可可西里 更新时间:2023-10-31 23:45:05 26 4
gpt4 key购买 nike

我在使用 NSURLCache 时看到了奇怪的行为,并用尽了所有选项但在这里发布......所以这里是:

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

我验证了我的服务器一致地发送以下 header :

 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)

NSURLSessionwillCacheResponse: 委托(delegate)方法根本没有被调用:

func URLSession(session: NSURLSession, dataTask: NSURLSessionDataTask, willCacheResponse proposedResponse: NSCachedURLResponse, completionHandler: (NSCachedURLResponse!) -> Void) {

但是,当简单地请求 NSURLRequest(URL: NSURL(string: URLString)!) 而不指定特定的 cachePolicy 时,然后 willCacheResponse: 确实被调用了。尽管如此,下次发出相同请求时,应用程序会返回到服务器...

我没有在任何 NSURLSession 委托(delegate)方法中做任何响应对象修改,我的请求都是 HTTP GET

我错过了什么?

我已经阅读了很多关于 NSURLCache 的内容:

设置:Xcode6.1、Swift、iOS8+

编辑: 我将一个基本示例推送到 github 以显示我的问题:https://github.com/opfeffer/nsurlcache

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

最佳答案

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

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

https://github.com/JCardenete/NTURLCache/tree/master/NTURLCache

NSURLCache - Disk caching for GET request with parameters not working

关于ios - NSURLSession 的 NSURLCache 没有按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27770350/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com