2016-08-24 96 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查看標題。