【发布时间】:2017-06-15 20:07:35
【问题描述】:
在我们的应用程序中,我们通过 Cocapods(当前版本 3.1.0)使用 AFNetorking 进行图像下载,并且我们使用磁盘缓存,它正在工作,但似乎磁盘上的缓存大小没有限制,我没有不知道怎么设置。
文档说:
AFNetworking 已经利用了缓存功能 由 NSURLCache 及其任何子类提供。只要你的 NSURLRequest 对象具有正确的缓存策略,并且您的服务器 响应包含有效的 Cache-Control 标头,响应将是 为后续请求自动缓存。
我们的图像响应具有这样的缓存控制标头:
缓存控制:公共,max-age=31209907
我们正在使用此代码来获取图像(明确设置缓存策略):
- (void)setImageWithURLString:(NSString *)URLString success:(void (^)())success
{
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:URLString] cachePolicy:NSURLRequestReturnCacheDataElseLoad timeoutInterval:60];
[request addValue:@"image/*" forHTTPHeaderField:@"Accept"];
[request addValue:@"gzip" forHTTPHeaderField:@"Accept-Encoding"];
__weak __typeof(self)weakSelf = self;
[self setImageWithURLRequest:request placeholderImage:nil success:^(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *image) {
__strong __typeof(weakSelf)strongSelf = weakSelf;
if (strongSelf && success) {
strongSelf.image = image;
success();
}
} failure:nil];
}
磁盘容量默认设置为 150 MB(我在 AFNetworking 中看到):
+ (NSURLCache *)defaultURLCache {
return [[NSURLCache alloc] initWithMemoryCapacity:20 * 1024 * 1024
diskCapacity:150 * 1024 * 1024
diskPath:@"com.alamofire.imagedownloader"];
}
我正在尝试将其设置为 100 MB,如下所示:
AFImageDownloader *imageDownloader = [AFImageDownloader defaultInstance];
NSURLCache *urlCache = imageDownloader.sessionManager.session.configuration.URLCache;
urlCache.diskCapacity = 100 * 1024 * 1024;
如果我让默认值 150 MB,容量将被忽略。此外,如果我将磁盘容量设置为 100 MB,则该值将被忽略。
我可以通过访问currentDiskUsage 来确认这一点。在任何情况下,它都远远超出diskCapacity。
我基本上有两个问题:
- 我的设置是否遗漏了什么?
- 是否可以设置磁盘容量,让缓存有限制?
提前致谢:)
【问题讨论】:
标签: caching afnetworking nsurlcache