2013-05-03 2 views
0

У меня на самом деле есть более одного вопроса относительно этого ... Я все еще новичок в NSURLCache и UIWebViews, но почему-то понял основы.Как проверить, загружается ли UIWebView из NSURLCache?

В любом случае, я смог успешно реализовать кэширование для своего UIWebView (я думаю). Я инициализировал NSURLCache. Мой UIWebView загружает его содержимое с помощью метода loadRequest :. Я назначил ViewController, которому принадлежит UIWebView, так как он делегирован. Я также использовал ViewController NSURLConnectionDataDelegate. Я реализовал соединение: willCacheResponse: метод для регистрации сообщения в консоли, чтобы я мог проверить, что кеширование было выполнено. Я также записал текущее использование диска и памяти. Он увеличивается после кеширования, поэтому я вижу, что он работает.

Однако, когда я загружаю страницу еще раз, я думаю, что запрос снова отправляется на сервер, потому что методы делегирования соединения, такие как connection: didReceiveResponse: и connection: willCacheResponse.

Я также хотел попробовать получить кешированный ответ из кеша, используя cachedResponseForRequest :. Я вызвал этот метод в webViewDidFinishLoad: но он всегда возвращает null. Действительно ли кэширование работает?

Как узнать, загружен ли WebView из кеша? Я злоупотребляю кэшемResponseForRequest :? И еще одна заметка, какие правильные значения заголовка Control-Cache должны присутствовать, по крайней мере, для кэширования? Я тестирую URL-адрес главной страницы Google и возвращает частное значение для своего заголовка Cache Control, но я вижу, что это кеширование работает, потому что вызывается соединение: willCacheResponse:.

Помогите, пожалуйста?

ответ

0

Если вы запустите HTTP-прокси, например Charles или Fiddler, вы можете следить за тем, какой сетевой трафик действительно происходит по кабелю (меньше).

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

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

+0

Это не отвечает на мой вопрос ... –

+0

@iOS_newbie - почему бы и нет? Я хочу сказать, что вы узнаете, загружается ли веб-просмотр из кеша, если прокси не показывает никаких исходящих запросов. – TomSwift

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