UIWebView NSURLRequestReloadIgnoringLocalCacheData фактически не игнорирует кэш - PullRequest
3 голосов
/ 31 марта 2010

У меня есть объект UIWebView с политикой кэширования, определенной как: NSURLRequestReloadIgnoringLocalCacheData

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

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

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

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

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

1 Ответ

2 голосов
/ 27 июля 2010

Вы пытались добавить метку времени с текущим временным интервалом к ​​URL-адресу в качестве параметра строки запроса, например,

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

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

[[NSURLCache sharedURLCache] removeCachedResponseForRequest: request];

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

...