我们经常缓存图片和数据,以提高我们的iPhone应用程序的性能。但是,您使用什么策略来管理缓存数据,例如删除或更新缓存数据?
我将图像保存到TMP文件夹,但不知道何时应该触发“检查过期缓存数据并将其删除”:iPhone应用程序启动,退出或空闲时间?
答案 0 :(得分:2)
当iPhone调用“didReceiveMemoryWarning”功能时,您应该删除缓存。
答案 1 :(得分:2)
当应用程序启动或退出时,用户通常期望响应能力。选择最少的实时时间,例如24小时,以及最少的空闲时间,例如一分钟。如果用户已空闲一分钟且距离上次缓存清除超过24小时,则清除缓存。如果要跟踪缓存的数据量,那么您也可以考虑这一点。如果它已经超过24小时和/或缓存中超过一兆字节。
如果您确定应用程序正常退出,而不是退出接听电话或启动其他应用程序,那么这也许是一个好时机。
如果你的应用程序做了一些用户必须等待的东西,但是这不会受到清除缓存的影响,那么这也许是一个好时机。例如,从服务器获取一些数据。
答案 2 :(得分:1)
感谢您的回复。 我同意在开始或退出时检查删除缓存会降低程序的性能。此外,退出时间也用于保存程序的状态。
在1分钟内检查空闲时间的想法是相当不错的,但是我必须建立机制以在应用程序时间内每15秒检查一次空闲。我认为这对于表现来说并不容易。
最后,我决定在检索新项目(数据+图像)后执行“检查并删除缓存”。我将检查不再需要显示的项目(数据+图像)并将其删除。我认为保存缓存的功能也会删除缓存。 当然,我会在另一个线程中执行此操作以避免冻结接口。
这是好事吗?请给我你的意见。答案 3 :(得分:0)
我个人不喜欢在打开应用程序时清除缓存,或者闲置时间超过1分钟。如果缓存的年龄大约是24小时,清理的想法是好的。
我个人的建议是构建一堆缓存文件。然后检查缓存文件创建/修改时间或上次缓存文件访问。如此干净的背景(不要让你的应用感觉慢,因为你在启动或停止应用程序时做这样的任务)可能在一个线程(iphone sdk支持吗?不知道:))并检查“是缓存文件早于24小时?如果是>>重新缓存或删除文件