我有一个 UITableView,其单元格包含自定义 ImageView,可以从互联网异步加载图像。为了加载这些图像,我使用 NSURLRequest 和 NSURLConnection ,效果很好。唯一的问题是图像没有缓存,因此每次使用时都会下载。我尝试将 NSURLRequest 的缓存策略设置为“NSURLRequestReturnCacheDataElseLoad”,但没有效果。
从link上的最后一个答案看来iPhone 上的 NSURLRequest 不支持磁盘缓存。这是正确的吗?
如果它确实有效,我很想知道它在我的情况下不起作用的原因是什么。
代码如下:
NSURLRequest* request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://myurl"] cachePolicy:NSURLRequestReturnCacheDataElseLoad timeoutInterval:60.0];
connection = [[NSURLConnection alloc] initWithRequest:request delegate:self];
最佳答案
我认为它应该有效。如果没有,则可能意味着 Web 服务器实际上正在提供不可缓存的内容。例如,因为它没有设置正确的标题。
如果您可以发布其中一张图片的链接,我们就可以仔细查看。
HTTP/1.1 200 OK
Date: Mon, 01 Mar 2010 12:40:46 GMT
Server: Apache
Last-Modified: Mon, 01 Mar 2010 09:33:29 GMT
ETag: "25e8dd2-11a6-480b9f1178c40"
Accept-Ranges: bytes
Content-Length: 4518
Keep-Alive: timeout=15, max=100
Connection: Keep-Alive
Content-Type: image/png
这是您的一张图像作为标题返回的内容。我没有看到 Expires
或 Cache-Control
header ,因此这可能就是它们不被缓存的原因。我认为就 WebKit 而言,这是每次都应该重新加载的动态内容。
关于iphone - 使用 NSURLRequest 和 NSURLConnection 进行磁盘缓存实际上可以在 iPhone 上使用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2352841/