2013-06-26 103 views
1

我已經設置了一個ARC兼容的iOS 6 SDK構建應用程序,以嘗試測試出UIWebView和NSURLCache sharedCache的緩存。UIWebView緩存不起作用NSURLRequestReturnCacheDataElseLoad

我形成我對UIWebView中像這樣的請求:

-(void)runRequestWithMode:(NSURLRequestCachePolicy)policyMode 
{ 
    NSString *theURL = @"http://server.mine.com:5555/test.htm"; 

    NSURL *url = [[NSURL alloc] initWithString:theURL]; 
    NSMutableURLRequest* urlRequest = [[NSMutableURLRequest alloc] initWithURL:url 
                    cachePolicy:policyMode 
                   timeoutInterval:30.0]; 

    if ([urlRequest cachePolicy] != policyMode) { 
     NSLog(@"!!!!!!!!OVERRULED!!!!!!!"); 
    } 

    [_webView loadRequest:urlRequest]; 
} 

而且UIWebViewDelegate回調爲內應加載:

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType { 

// NSLog(@"webView shouldStartLoadWithRequest loading %@", [[request URL] absoluteString]); 

    NSLog(@"webView request cachePolicy: %d", [request cachePolicy]); 

我的日誌記錄的控制檯輸出顯示了請求不使用我在這個回調運行時在可變請求上設置的cachePolicy。

即使我操作的要求,在這一點上設置的CachePolicy正確的初始設置,服務器站點仍然不報告304(數據請求是不變的頁面,並使用高速緩衝存儲器中)

在使用chrome的桌面上,我從服務器獲得304響應,而我在重新加載頁面時從設備上看到200響應。

在我的應用程序委託我設置我的URL緩存爲這樣:

NSURLCache *URLCache = [[NSURLCache alloc] initWithMemoryCapacity:4 * 1024 * 1024 
                 diskCapacity:20 * 1024 * 1024 
                  diskPath:nil]; 
[NSURLCache setSharedURLCache:URLCache]; 

我需要什麼做的就是我的應用程序的Web視圖接收304響應?

任何幫助或指針在哪裏閱讀文檔,將不勝感激。

回答