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