2012-03-16 12 views
19

Desidero caricare una visualizzazione Web senza cache?UIwebview senza cache

//Create a URL object. 
NSURL *url = [NSURL URLWithString:urlAddress]; 
//URL Request Object 
NSURLRequest *requestObj = [NSURLRequest requestWithURL:url]; 
//Load the request in the UIWebView. 
[kdgWebView loadRequest:requestObj]; 

Grazie per l'aiuto.

Jean.

risposta

34

Objective-C:

// Remove and disable all URL Cache, but doesn't seem to affect the memory 
[[NSURLCache sharedURLCache] removeAllCachedResponses]; 
[[NSURLCache sharedURLCache] setDiskCapacity:0]; 
[[NSURLCache sharedURLCache] setMemoryCapacity:0]; 

È possibile trovare maggiori informazioni in http://blog.techno-barje.fr/post/2010/10/04/UIWebView-secrets-part2-leaks-on-release/

Swift:

NSURLCache.sharedURLCache().removeAllCachedResponses() 
NSURLCache.sharedURLCache().diskCapacity = 0 
NSURLCache.sharedURLCache().memoryCapacity = 0 
+0

Non funziona per me ? i dati memorizzati nella cache vengono caricati anche se inserisco questo codice nel codice. –

+0

È possibile modificare la politica della cache – LuisEspinoza

+0

Grazie mille per la risposta. Questa soluzione ha funzionato per me, dove sto usando un UIWebView e non volevo caricare le pagine in cache quando non ci sono connessioni Internet. –

12

È possibile modificare la vostra politica di cache, utilizzando il codice:

NSURLRequest *requestObj = [NSURLRequest requestWithURL:url 
             cachePolicy:NSURLRequestReloadIgnoringCacheData 
            timeoutInterval: 10.0]; 
+0

hai provato? – LuisEspinoza

+0

grazie, ho trovato il motivo, perché la cache stava caricando ... Ho usato un manifest di cache, e c'è un bug con il manifest della cache in HTML5. –

0

I prova a rispondere a una domanda simile qui. Spero sia stato utile per te! L'ultima soluzione funziona per HTML ma non per immagini, css e js collegati in html.

How to clear UIWebView cache?

0

Ho provato tutte queste soluzioni, ma nessuno di loro lavoro ogni volta. Il mio test principale era una pagina html con un'immagine impostata come sfondo nella pagina html. Questa pagina html e l'immagine sono scaricate localmente sul mio iPad attraverso un metodo di "sincronizzazione" che ho scritto. L'unico modo per mantenere la cache completamente resettata è la costante modifica dell'URL dell'immagine nella pagina html in modo che pensi che sia un'immagine unica ogni volta. Per esempio nel mio html:

<body background="image.png?v123"> 

Così ogni cambio pagina che faccio devo aggiornare il numero di versione:

<body background="image.png?v1234"> 

ecc, ecc è possibile modificare l'URL in ogni caso si desidera, semplicemente deve essere diverso

Beh, sono stanco di farlo. Ora Quando scarico il contenuto localmente, sto invece cambiando dinamicamente il nome della cartella contenente. Poiché questa cartella è una cartella principale e tutti i miei collegamenti sono relativi, significa che non devo modificare i miei file html ogni volta. Finora sembra funzionare bene. Vorrei che questi altri metodi fossero coerenti in quanto sarebbe stato molto più semplice reimpostare semplicemente la cache.

Così nelle mie richieste proprio la baseurl che sta causando la cache per resettare, non la stringa di query per la mia immagine di sfondo url o, o un file css, ecc, ecc

NSString *myURL = @"index.html"; 
NSURL *baseURL = [NSURL fileURLWithPath:@"FULL_PATH_TO_DOCS/MYFOLDERV123"]; 
[myTargetWebView loadHTMLString:myURL baseURL:baseURL]; 
Problemi correlati