Iphone 清除三个20&;Restkit缓存信息以释放磁盘内存空间
除了服务器中的图像外,我下载了一些文件。这些下载的文件使用TTURLCache进行缓存。在一段时间内,应用程序消耗的磁盘空间可能会增加。出于同样的原因,应用程序的设置中有一个功能可以选择性地清除缓存的信息 在帮助下,我能够从服务器上删除本地磁盘中与URL对应的存储文件。这将清除此沙箱位置中的数据:“Library/Caches/Three20” 但是,我观察到,如果切换到脱机模式,应用程序仍然能够提取远程资源并呈现数据。此外,即使没有互联网连接,它也会将文件添加回“Library/Caches/Three20”位置!在进一步检查后,我发现有一个缓存数据库,从中获取请求: “Library/Caches/com.yourcompany.yourapp/Cache.db” “Library/Caches/com.yourcompany.yourapp/Cache.db shm” “Library/Caches/com.yourcompany.yourapp/Cache.db” 很好,所以我测试了一下,除了有选择地从“Library/Caches/Three20”位置清除文件外,我还必须有选择地从数据库中删除数据库条目:“Library/Caches/com.yourcompany.yourapp/Cache.db”、“Library/Caches/com.yourcompany.yourapp/Cache.db shm”和“Library/Caches/com.yourcompany.yourapp/Cache.db” 我检查了代码,但找不到数据写入Cache.db的确切位置以及清除其中信息的位置Iphone 清除三个20&;Restkit缓存信息以释放磁盘内存空间,iphone,cocoa-touch,three20,Iphone,Cocoa Touch,Three20,除了服务器中的图像外,我下载了一些文件。这些下载的文件使用TTURLCache进行缓存。在一段时间内,应用程序消耗的磁盘空间可能会增加。出于同样的原因,应用程序的设置中有一个功能可以选择性地清除缓存的信息 在帮助下,我能够从服务器上删除本地磁盘中与URL对应的存储文件。这将清除此沙箱位置中的数据:“Library/Caches/Three20” 但是,我观察到,如果切换到脱机模式,应用程序仍然能够提取远程资源并呈现数据。此外,即使没有互联网连接,它也会将文件添加回“Library/Caches/
任何潜在客户都将不胜感激。Cache.db是Apple URL加载系统使用的缓存。没有文档记录它是如何工作的,但是有理由认为这个缓存将自己管理它的大小 即使您从Three20的缓存中删除文件,它们仍然位于URL加载系统缓存中,从那里提供服务,然后读取到Three20的缓存中
在中找到有关此缓存的更多信息基于tonklon的回答和我的更多研究,我知道是NSURLCache缓存了URL的响应。图片中还有一个Restkit的“永久存储”数据,该数据也必须清除。因此,以下三点确保我们(有选择地)清除数据:
是的,你是对的,我在回答中还补充了更多细节。如果我是对的,请复习一下。这对我来说似乎是对的。但是您是否考虑过完全禁用NSURLCache?如果您使用的是Three20和RestKit的缓存,那么应该这样做。我正在清除NSURLCache的内容,因为我观察到所有的数据都仍然存在于NSURLCache中。即使我从缓存中删除了文件,也没有什么区别,因为所有数据都已缓存。清除NSURLCache后,我可以看到所有数据都被擦除了。然而,我正在重新设置“原始磁盘容量”,这似乎没有产生任何影响。我发现数据不再缓存在“Cache.db wal”文件中。你知道吗?
[[RKClient sharedClient].requestCache invalidateAll];
[[NSURLCache sharedURLCache] removeAllCachedResponses];
NSUInteger originalDiskCapacity = [[NSURLCache sharedURLCache] diskCapacity];
[[NSURLCache sharedURLCache] setDiskCapacity:0];
[[NSURLCache sharedURLCache] setDiskCapacity:originalDiskCapacity];