2016-08-24 1 views
0

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

[self setRequestObj:[NSURLRequest requestWithURL:loadUrl cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60.0]]; 

Если я начал мое приложение в первый раз, с подключением к Интернету моего console вошел

2016-08-24 15:37:01.713 BrowserApp[1991:345138] applicationDidBecomeActive! 
2016-08-24 15:37:01.955 BrowserApp[1991:345138] NSURLRequestUseProtocolCachePolicy 
2016-08-24 15:37:22.003 BrowserApp[1991:345138] applicationDidEnterBackground! 
2016-08-24 15:37:22.559 BrowserApp[1991:345138] applicationWillEnterForeground! 
2016-08-24 15:37:23.075 BrowserApp[1991:345138] applicationDidBecomeActive! 
2016-08-24 15:37:37.069 BrowserApp[1991:345138] applicationDidEnterBackground! 
2016-08-24 15:37:37.073 BrowserApp[1991:345138] applicationWillTerminate! 

Я вижу, что каждый метод вызывается в файле AppDelegate.m. Я отключу свой телефон от Интернета, снова запустил приложение (не было на заднем плане, как сказал мой console), и ничего не происходит. Я получаю только белый сайт.

Почему website не отображается на моем экране, хотя я настроен на cache?

ответ

0

Возможно, страница, на которую вы загрузили, имеет срок годности (она может быть установлена ​​как истекающая немедленно). Попробуйте установить политику cahce как NSURLRequestReturnCacheDataElseLoad (хотя это может быть не очень хорошо в долгосрочной перспективе, потому что это будет никогда перезагрузка).

В качестве альтернативы (более вероятно) заголовки ответов с веб-сайта могут содержать заголовок управления кешем. Независимо от того, что вы говорите, страница все равно может указать NSURLRequest, что ее нельзя кэшировать.

Чтобы исследовать, вы можете установить точку останова или поместить некоторые записи в свой код, где вы обрабатывали, получили ответ. Направьте NSURLResponse на номер NSHTTPURLResponse, а затем посмотрите на заголовки, используя allHeaderFields.