Когда мы должны удалить данные кэша в приложениях iPhone? - PullRequest
0 голосов
/ 13 апреля 2010

Мы часто кешируем изображение и данные, чтобы улучшить производительность нашего приложения для iPhone. Но какую стратегию вы используете для управления данными кэша, например, для удаления или обновления?

Я сохранил изображения в папке TMP, но не знаю, когда мне следует перейти к «извлечению устаревших данных из кэша и их удалению»: когда приложения iPhone запускаются, закрываются или во время простоя?

Ответы [ 4 ]

2 голосов
/ 13 апреля 2010

Когда приложение запускается или закрывается, пользователь обычно ожидает отклика. Выберите минимальное количество реального времени, например, 24 часа, и минимальное время простоя, например, минуту. Если пользователь простаивал минуту и ​​прошло более 24 часов с момента последней очистки кеша, очистите кеш. Если вы отслеживаете объем кешируемых данных, вы можете это учитывать. Если прошло более 24 часов и / или в кэше больше мегабайта.

Если вы уверены, что приложение завершается нормально, в отличие от того, чтобы выйти из системы, чтобы ответить на вызов или запустить другое приложение, то это также может быть хорошим временем.

Если ваше приложение делает что-то, что пользователь все равно должен ждать, но это не повлияет на очистку кэша, тогда это также может быть хорошим временем. Например, выборка некоторых данных с сервера.

2 голосов
/ 13 апреля 2010

Вы должны удалить кэш, когда iPhone вызывает вашу функцию " didReceiveMemoryWarning ".

1 голос
/ 15 апреля 2010

Ценю за ваши ответы. Я согласен с тем, что проверка на удаление кэша при запуске или выходе приведет к снижению производительности программы. Кроме того, время выхода также используется для сохранения состояния программы.

Идея проверить время простоя в течение 1 минуты вполне нормально, но мне нужно создать механизм для проверки простоя каждые 15 секунд во время приложения. Я не думаю, что это легко и хорошо для производительности.

Наконец, я решаю выполнить «проверку и удаление кэша» после того, как получаю новые элементы (данные + изображение). Я проверю элементы (данные + изображение), которые больше не нужно отображать, и удалю их. Я думаю, что имеет смысл, что функция, которая сохраняет кэш, также удалит кэш. Конечно, я сделаю это в другом потоке, чтобы избежать зависания интерфейса.

Это хорошо? Пожалуйста, дайте мне свое мнение.

0 голосов
/ 13 апреля 2010

Мне лично не нравится, очищается ли кеш при открытии приложения или простаивает дольше, чем около 1 минуты. Идея очистки, если возраст кэша составляет около 24 часов, хороша.

Моя личная рекомендация - создавать стек кеш-файлов. И затем проверка времени создания / изменения файла кэша или последнего доступа к файлу кэша. Так что чисто в фоновом режиме (не позволяйте вашему приложению чувствовать себя медленным, потому что вы выполняете такие задачи при запуске или остановке приложения), может быть, в потоке (поддерживает ли iphone sdk это? Dont know :)) и проверьте, является ли «кеш» файл старше 24 часов? если да> восстановить или удалить файл

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...