在iOS上,如何在使用NSURLConnection时缓存更大的文件(1MB)?

时间:2012-08-30 07:43:45

标签: iphone ios ipad nsurlconnection nsurlcache

在iOS上,我正在尝试NSURLConnection从Web服务器加载数据,这些数据只是PNG文件。

所有文件都将被缓存,除了一个大小为1,173,084字节的文件,大约是1MB。

我循环浏览6个文件:pic1.png,pic2.png,... 3,4,5,6,然后回到1,2,3 ......文件大小为1MB,650kb, 450kb,以及一些较小的文件。

它正在iPad模拟器上进行测试,因此内存不是问题。

以下内容已在viewDidLoad中完成:

[[NSURLCache sharedURLCache] setMemoryCapacity:15 * 1024 * 1024 ];
[[NSURLCache sharedURLCache] setDiskCapacity:20 * 1024 * 1024 ];

NSLog(@"Memory Cache capacity is %i", [[NSURLCache sharedURLCache] memoryCapacity]);
NSLog(@"Disk Cache capacity is %i", [[NSURLCache sharedURLCache] diskCapacity]);

NSURLConnection创建了touchesBegan

NSURLConnection *connection = [NSURLConnection connectionWithRequest:request 
                                   delegate:self];

缓存大小为15MB和20MB,远远大于总文件大小,大约为3.2MB。如果下载几乎是即时完成,我可以看到文件被缓存,而1MB文件经历了很多connection:didReceiveData,最后是connectionDidFinishLoading

1 个答案:

答案 0 :(得分:0)

NSURLCache具有决定要缓存哪些文件的意义。最大文件大小与缓存大小有关。尝试将DiskCapacity设置为200 MB。您将看到将缓存的最大文件大小也将增加。解决这个问题的唯一方法是实现自己的NSUrlCache。如果您正在寻找如何做到这一点的示例,请查看https://github.com/evermeer/EVURLCache