2012-03-16 39 views
19

Quiero cargar una vista web sin caché?UIwebview sin memoria caché

//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]; 

Gracias por la ayuda.

Jean.

Respuesta

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

Puede encontrar más información en 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

no funciona para mí ? los datos almacenados en caché se cargan incluso si los incluyo en el código. –

+0

Puede cambiar la política de caché – LuisEspinoza

+0

Muchas gracias por la respuesta. Esta solución funcionó para mí, donde estoy usando un UIWebView y no quería que las páginas en caché se cargaran cuando no había conexión a Internet. –

12

Puede cambiar su política de caché, utilizando el código:

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

¿lo has intentado? – LuisEspinoza

+0

gracias, encontré el motivo, por qué se cargaba el caché ... Utilicé un manifiesto de caché, y hay un error con el manifiesto de caché en HTML5. –

0

I intenta responder una pregunta similar aquí. ¡Espero que haya sido útil para ti! La última solución funciona para HTML pero no para imágenes, css y js vinculadas en html.

How to clear UIWebView cache?

0

He intentado todas estas soluciones, pero ninguno de ellos funciona cada vez. Mi prueba principal fue una página html con una imagen configurada como fondo en la página html. Esta página html y la imagen se descargan localmente en mi iPad a través de un método de "sincronización" que he escrito. La única forma de mantener el caché completamente restablecido es cambiar constantemente la URL de la imagen en la página html para que crea que es una imagen única cada vez. Por ejemplo en mi html:

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

Así que cada cambio de página i hacer lo que tengo que actualizar el número de versión:

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

etc, etc Usted puede cambiar la url de todos modos que desee, sólo tiene que ser diferente.

Bueno, estoy cansado de hacer esto. Ahora cuando descargo contenido localmente, cambio dinámicamente el nombre de la carpeta que contiene. Como esta carpeta es una carpeta principal y todos mis enlaces son relativos, significa que no tengo que editar mis archivos html cada vez. Hasta ahora parece estar funcionando bien. Desearía que estos otros métodos fueran consistentes, ya que sería mucho más fácil simplemente restablecer el caché.

Así que en mis solicitudes de su baseurl la que está causando mi caché para restablecer, no la cadena de consulta de la imagen de fondo o la URL de mi, o un archivo css, etc, etc.

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