2013-06-26 3 views
1

J'ai installé une application intégrée au SDK iOS 6 conforme à l'ARC pour essayer de tester UIWebView et la mise en cache de NSURLCache sharedCache.La mise en cache d'UIWebView ne fonctionne pas pour NSURLRequestReturnCacheDataElseLoad

Je formant ma demande de UIWebView comme ceci:

-(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]; 
} 

Et à l'intérieur du rappel UIWebViewDelegate pour devrait charger:

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

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

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

La sortie de la console de mon exploitation forestière montre la demande n'est pas en utilisant cachePolicy, je définis la requête mutable au moment où ce rappel est exécuté.

Même si je manipule la demande à ce stade de définir le cachePolicy au réglage initial correct, le site du serveur est toujours pas rapporte 304 (demande de données est d'une page inchangée et d'utiliser le cache en réponse)

Depuis le bureau en utilisant le chrome, je reçois une réponse du serveur 304 par rapport au 200 que je vois sur l'appareil lorsque je recharge la page.

Dans mon délégué app j'ai installé le cache de mon URL en tant que tel:

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

Que dois-je faire pour obtenir l'affichage Web de ma demande pour recevoir une réponse 304? Toute aide ou pointeur où lire de la documentation serait appréciée.

Répondre

Questions connexes