我们什么时候应该删除iPhone应用程序中的缓存数据?

时间:2010-04-13 02:56:02

标签: iphone objective-c caching

我们经常缓存图片和数据,以提高我们的iPhone应用程序的性能。但是,您使用什么策略来管理缓存数据,例如删除或更新缓存数据?

我将图像保存到TMP文件夹,但不知道何时应该触发“检查过期缓存数据并将其删除”:iPhone应用程序启动,退出或空闲时间?

4 个答案:

答案 0 :(得分:2)

当iPhone调用“didReceiveMemoryWarning”功能时,您应该删除缓存。

答案 1 :(得分:2)

当应用程序启动或退出时,用户通常期望响应能力。选择最少的实时时间,例如24小时,以及最少的空闲时间,例如一分钟。如果用户已空闲一分钟且距离上次缓存清除超过24小时,则清除缓存。如果要跟踪缓存的数据量,那么您也可以考虑这一点。如果它已经超过24小时和/或缓存中超过一兆字节。

如果您确定应用程序正常退出,而不是退出接听电话或启动其他应用程序,那么这也许是一个好时机。

如果你的应用程序做了一些用户必须等待的东西,但是这不会受到清除缓存的影响,那么这也许是一个好时机。例如,从服务器获取一些数据。

答案 2 :(得分:1)

感谢您的回复。 我同意在开始或退出时检查删除缓存会降低程序的性能。此外,退出时间也用于保存程序的状态。

在1分钟内检查空闲时间的想法是相当不错的,但是我必须建立机制以在应用程序时间内每15秒检查一次空闲。我认为这对于表现来说并不容易。

最后,我决定在检索新项目(数据+图像)后执行“检查并删除缓存”。我将检查不再需要显示的项目(数据+图像)并将其删除。我认为保存缓存的功能也会删除缓存。 当然,我会在另一个线程中执行此操作以避免冻结接口。

这是好事吗?请给我你的意见。

答案 3 :(得分:0)

我个人不喜欢在打开应用程序时清除缓存,或者闲置时间超过1分钟。如果缓存的年龄大约是24小时,清理的想法是好的。

我个人的建议是构建一堆缓存文件。然后检查缓存文件创建/修改时间或上次缓存文件访问。如此干净的背景(不要让你的应用感觉慢,因为你在启动或停止应用程序时做这样的任务)可能在一个线程(iphone sdk支持吗?不知道:))并检查“是缓存文件早于24小时?如果是>>重新缓存或删除文件