gpt4 book ai didi

iphone - NSURLConnection 是否利用了 NSURLCache?

转载 作者:行者123 更新时间:2023-12-03 18:28:56 24 4
gpt4 key购买 nike

我正在尝试弄清楚如何使用 URL 加载框架来利用缓存来加载 URL。

我正在使用 NSURLConnections 并向它们提供 NSURLRequests。我什至将这些请求的缓存策略设置为 NSURLRequestReturnCacheDataElseLoad。我第一次加载请求时,它会自动放入缓存中([NSURLCache sharedCache] 有它)。但下次我加载相同的请求时,NSURLConnection 似乎会忽略缓存中的内容并重新加载数据。

我应该手动实现缓存查找并返回缓存数据吗? NSURLConnection 不这样做吗?或者有什么方法可以让框架无缝地使用缓存?

更新:尝试了以下操作但没有成功:

  • 将请求缓存策略设置为 NSURLRequestReturnCacheDataElseLoad 而不是 NSURLRequestUseProtocolCachePolicy
  • 重新使用请求对象而不是创建新的请求对象
  • 使用 +[NSURLConnection sendSynchronousRequest:returningResponse:error:] 而不是异步加载

最佳答案

注意 iOS 5 及以上版本提供了具有内存和磁盘容量两者的sharedURLCache。

除非您将 NSURLCache 设置为具有一定的容量,否则不会缓存任何内容:

// A 10MB cache. This a good avatar-image-cache size but might be too 
// large for your app's memory requirements. YMMV.
[[NSURLCache sharedURLCache] setMemoryCapacity:1024*1024*10];

默认的 iPhone NSURLCache 实例拒绝缓存到磁盘。如果你需要这种行为,你必须子类化 NSURLCache 并实现你自己的磁盘缓存。我在 GitHub 上找到了许多磁盘缓存的示例,但恕我直言,它们都没有令人满意地完成完全必要的“修剪”步骤。

关于iphone - NSURLConnection 是否利用了 NSURLCache?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1870004/

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