2010-03-31 1 views
3

У меня есть объект UIWebView с кэшированием-политики определяется как: NSURLRequestReloadIgnoringLocalCacheDataUIWebView NSURLRequestReloadIgnoringLocalCacheData фактически не игнорировать кэш

Это должно игнорировать любые объекты в локальном кэше и получить последнюю версию сайта из паутина.

Однако после первой загрузки сайта (десять ресурсов в трассировке, HTTP GET) все последующие загрузки сайта получают только небольшое количество ресурсов (три ресурса в трассировке, HTTP GET). Все изображения загружаются из какого-то локального источника.

Я подтвердил, что мой sharedURLCache имеет использование памяти 0 байтов и использование диска 0 байтов. Всякий раз, когда процесс начинает работать, полная версия сайта снова извлекается. Это заставляет меня думать, что эти ресурсы хранятся в кеше в памяти, но, как я уже отмечал ранее, [[NSURLCache sharedURLCache] currentMemoryUsage] возвращает 0.

Я также попытался явно удалить кешированный ответ для моего запроса , но это, похоже, не имеет никакого эффекта. Что дает?

Редактировать: Кроме того, NSHTTPCookieStorage очищается перед каждой загрузкой, и я могу подтвердить, что последующие загрузки извлекают четыре ресурса вместо трех. Проблема кэширования сохраняется независимо от изменения.

+0

Вы смогли решить проблему? Я пробовал все решения, упомянутые в SO и в других местах, но не мог этого сделать. Кроме того, некоторые приложения, похоже, это успешно говорят httpwatch для iOS. – Ravi

+0

Использование [[NSURLCache sharedURLCache] removeAllCachedResponses]; казалось, разрешал проблему кэширования, но с обновлением iOS 7.0 этот метод вызывал сбой объекта [NSURLCache sharedURLCache] в стеке malloc/delete. – dodeskjeggen

ответ

2

Вы пытались добавить временную метку с текущим интервалом времени в URL как параметр querystring, например.

http://www.myhost.com/page.html?timestamp=123456789.0 

Я не знаю, если это работает, это зависит от того, как реализован кэш, но это может быть стоит дать ему попробовать; это немного взломанно, но я использовал это давно в галактике, далекой далеко, когда делаю Flash-апплеты. У меня такие же проблемы сейчас, и я даже пытался использовать:

[[NSURLCache sharedURLCache] removeCachedResponseForRequest: request]; 

После завершения загрузки UIWebView.