2013-05-16 2 views
2

У меня есть простое приложение для iOS, которое загружает и перечисляет ссылки и представляет их в UIWebview. Приложение, когда установлено, составляет ~ 2 МБ. После щелчка по некоторым ссылкам я заметил, что дисковое использование документов и данных подскочило до 10 МБ. Через пару дней я заметил, что использование диска продолжает расти. Мой вопрос: какой лучший способ управлять дисковым хранилищем на iOS?UIWebview кэширование на диск

Цель этого приложения заключается в том, чтобы быть очень минимальным и не тяжелым для ресурсов, но я обеспокоен тем, что он будет продолжать потреблять все больше дискового пространства, и я предполагаю, что это кешированный веб-контент. Должен ли I/установить способ задать размер кеша? Или iOS просто обрабатывает это для меня и в конечном итоге удаляет старые данные?

ответ

2

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

Теперь, сказав, что вы получаете некоторый контроль над политикой кэширования NSURLRequest. Посмотрите документы NSURLRequest, чтобы узнать больше об этом.

+0

Спасибо за ответ. Моя забота, однако, заключается в том, будет ли iOS правильно обращаться с дисковым кэшем. Я только что напечатал следующее, я не могу понять, почему использование> емкость: '(lldb) po (int) [[NSURLCache sharedURLCache] currentDiskUsage] $ 0 = 23023616 [нет описания Objective-C] (lldb) p (int) [[NSURLCache sharedURLCache] diskCapacity] (int) $ 1 = 20971520' – hodgesmr

+0

После некоторого дополнительного тестирования кажется, что кеш обрезается после превышения емкости. Таким образом, кажется нормальным переходить через емкость и ожидать, что в следующий раз, когда он попадет, ОС начнет снимать вещи. Это кажется правильным? Если да, то я думаю, что ты прав, и мне не нужно возиться с ним. – hodgesmr

+0

Это то, что автоматически поддерживается кешем * is *. Он заполняет и чернослив, заполняет и чернослив. Не волнуйся, будь счастлив. Думаю, я уже это сказал. :) – matt

2

Укажите размер кэша:

int cacheSizeMemory = 8 * 1024 * 1024; // 8MB 
int cacheSizeDisk = 32 * 1024 * 1024; // 32MB 
NSURLCache* sharedCache = [[NSURLCache alloc] initWithMemoryCapacity:cacheSizeMemory diskCapacity:cacheSizeDisk diskPath:@"nsurlcache"]; 
[NSURLCache setSharedURLCache:sharedCache]; 

удалить все сохраненные кэшированные ответы URL:

[[NSURLCache sharedURLCache] removeAllCachedResponses]; 

Надежда быть полезным для вас!

Смежные вопросы