2013-05-16 161 views
2

我有一个简单的iOS应用程序,加载和链接列表,并将它们呈现在UIWebview中。该应用程序安装后的大小约为2MB。在点击某些链接后,我发现文档和数据的磁盘使用量跳到了10MB以上。几天后,我注意到磁盘使用量持续增长。我的问题是,在iOS上管理磁盘存储的最佳方式是什么?UIWebview缓存到磁盘

这个应用程序的目标是非常小,不占用资源,但我担心它会继续消耗越来越多的磁盘空间,我认为是缓存的Web内容。我应该/有办法设置缓存大小吗?或者iOS只是为我处理这个问题并最终删除旧数据?

回答

2

不要过早优化!磁盘上的资源不会给RAM内存带来压力,所以不要担心。如果系统正在为您管理缓存,则无法猜测它会执行什么操作。如果需要清理空间,它可能会清除空间。别担心,快乐。

现在,说了,你确实得到了对NSURLRequest缓存策略的一些控制。查看NSURLRequest文档以了解更多信息。

+0

感谢您的回复。不过,我担心iOS是否会正确处理磁盘缓存。我只是打印以下内容,我不明白为什么使用容量: '(lldb)po(int)[[NSURLCache sharedURLCache] currentDiskUsage] $ 0 = 23023616 [no Objective-C description available] (lldb)p (int)[[NSURLCache sharedURLCache] diskCapacity] (int)$ 1 = 20971520' – hodgesmr

+0

经过一些额外的测试后,看起来缓存在超过容量后被修剪。所以看起来很正常,要重新审视容量,并期望下次遇到问题时,操作系统将开始移除内容。这似乎是正确的吗?如果是这样,那么我认为你是对的,而且我不需要捣乱它。 – hodgesmr

+0

这是一个自动维护的缓存*。它填充和修剪,填充和修剪。别担心,快乐。我想我已经说过了。 :) – matt

2

指定缓存大小:

int cacheSizeMemory = 8 * 1024 * 1024; // 8MB 
int cacheSizeDisk = 32 * 1024 * 1024; // 32MB 
NSURLCache* sharedCache = [[NSURLCache alloc] initWithMemoryCapacity:cacheSizeMemory diskCapacity:cacheSizeDisk diskPath:@"nsurlcache"]; 
[NSURLCache setSharedURLCache:sharedCache]; 

删除所有存储的缓存URL的响应:

[[NSURLCache sharedURLCache] removeAllCachedResponses]; 

希望能对你有用!