2010-04-13 1 views
0

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

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

ответ

1

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

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

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

Это хорошо? Pls дает мне ваше мнение.

2

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

+0

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

+0

спасибо, но как насчет хранения данных на диске? Когда мы проверяем данные кэша для поиска и удаления устаревших данных? – KONG

+0

@athanhcong, вы можете периодически находить и удалять данные кэша из даты, используя NSTimer ... вам нужно будет выбрать период, который дает лучшую производительность ..., которая будет сильно зависеть от вашего приложения. Мое предложение состоит в том, что вы его профиль. –

2

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

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

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

0

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

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