gpt4 book ai didi

ios - 如何使用 AFNetworking 缓存文件下载?

转载 作者:行者123 更新时间:2023-12-01 18:19:35 24 4
gpt4 key购买 nike

我正在尝试下载一些文件。

对于每个单元格,我检查文件是否存在并且已经存储在目录中,如果不存在,我下载它。

但我也为接下来的几个单元下载文件。

如果我试图提前下载不可见单元格的文件,但随后用户滚动到该单元格并且文件尚未完全下载,会发生什么情况。

有没有办法阻止它下载两次?
无论如何知道该文件已经被下载了吗?

我正在使用 AFNetworking。

最佳答案

您正在尝试做的事情有一个名称并且它正在缓存。AFNetworking已经按照 official FAQs 实现了它

Does AFNetworking have any caching mechanisms built-in?

AFNetworking takes advantage of the caching functionality already provided by NSURLCache and any of its subclasses. So long as your NSURLRequest objects have the correct cache policy, and your server response contains a valid Cache-Control header, responses will be automatically cached for subsequent requests.


如下设置缓存就OK了
- (void)setupCache {
NSURLCache *urlCache = [[NSURLCache alloc] initWithMemoryCapacity:1024*1024*4 // 1MB mem cache
diskCapacity:1024*1024*5 // 5MB disk cache
diskPath:nil];
[NSURLCache setSharedURLCache:urlCache];
}
然后只需正常执行请求,如果资源在缓存中,您将获得缓存命中,并且您不会下载两次。

请注意,如果您必须支持 iOS5 以下的任何内容,您必须使用备用 URL 缓存,例如 SDURLCache 并设置如下
- (void)setupCache {
SDURLCache *urlCache = [[SDURLCache alloc] initWithMemoryCapacity:1024*1024 // 1MB mem cache
diskCapacity:1024*1024*5 // 5MB disk cache
diskPath:[SDURLCache defaultCachePath]];
[NSURLCache setSharedURLCache:urlCache];
}
原因在 this article 中有很好的解释。 , 但可以用以下引用来概括:

Before iOS5, NSURLCache just saved requests to memory, even if the documentation said otherwise - the diskCapacity property was silently ignored

关于ios - 如何使用 AFNetworking 缓存文件下载?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18461423/

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