¿Cómo borrar el caché de UIWebView?

Necesito UIWebView para mostrar algún archivo .webarchive local. Pero las imágenes tienen los mismos nombres, por lo que UIWebView muestra solo una imagen todo el tiempo. ¿Cómo puedo borrar el caché?

Gracias por adelantado

// Flush all cached data [[NSURLCache sharedURLCache] removeAllCachedResponses]; 
 NSURLRequest* request = [NSURLRequest requestWithURL:fileURL cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:60.0]; [webView loadRequest:request]; 

(ahora con error tipográfico)

He tenido este problema yo mismo con script y archivos css en caché.

Mi solución fue poner un parámetro de prevención de caché en la URL src:

  

donde t = 1234 cambia cada vez que se carga la página.

Utilizando

 [[NSURLCache sharedURLCache] removeAllCachedResponses]; 

ANTES de realizar la llamada o cuando carga el controlador de vista, esta es una función estática que elimina todos los datos de caché para las respuestas. Solo usando cachePolicy no fue suficiente, veo que uiwebview podría actualizar el documento html pero no el documento vinculado como CSS, JS o imágenes.

Intento esta solución y funciona.

  if (lastReq){ [[NSURLCache sharedURLCache] removeCachedResponseForRequest:lastReq]; [[NSURLCache sharedURLCache] removeAllCachedResponses]; } lastReq=[NSMutableURLRequest requestWithURL:[NSURL URLWithString:localUrl] cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:10000]; [lastReq setCachePolicy:NSURLRequestReloadIgnoringLocalCacheData]; [self.mainWebView loadRequest:lastReq]; 

En primer lugar, elimino el caché de la última solicitud y llamo para eliminar el rest de la memoria caché (creo que esto no es tan importante) – Luego creo una solicitud nsurl y hago caso omiso deLocalCacheData – Por último, carga la nueva solicitud

Lo compruebo y vuelvo a cargar todos los archivos (html, css, js e imágenes).

 //to prevent internal caching of webpages in application NSURLCache *sharedCache = [[NSURLCache alloc] initWithMemoryCapacity:0 diskCapacity:0 diskPath:nil]; [NSURLCache setSharedURLCache:sharedCache]; [sharedCache release]; sharedCache = nil; 

intenta usar esto Borrará la memoria caché url de su aplicación.

Estoy trabajando con algunos diseñadores para editar los archivos CSS utilizados por algunas vistas web en una aplicación. Se quejaban de que los cambios en las hojas de estilo no se reflejaban en la aplicación, y un poco de depuración con Charles confirmó que no se estaban recargando. Intenté aparentemente todas las respuestas en StackOverflow, fue en vano.

Lo que finalmente hizo el truco fue crear una subclase NSURLCache que anula -cachedResponseForRequest:

 - (NSCachedURLResponse*)cachedResponseForRequest:(NSURLRequest*)request { if ([[[[request URL] absoluteString] pathExtension] caseInsensitiveCompare:@"css"] == NSOrderedSame) return nil; else return [super cachedResponseForRequest:request]; } 

Luego lo instalo con una memoria y capacidad de disco razonables:

 NSURLCache *currentCache = [NSURLCache sharedURLCache]; NSString *cachePath = [cachesDirectory() stringByAppendingPathComponent:@"DebugCache"]; DebugURLCache *cache = [[DebugURLCache alloc] initWithMemoryCapacity:currentCache.memoryCapacity diskCapacity:currentCache.diskCapacity diskPath:cachePath]; [NSURLCache setSharedURLCache:cache]; [cache release]; 

( cachesDirectory() es una función que devuelve /Library/Caches bajo el directorio de la aplicación en iOS).

Como puede ver por su nombre, estoy usando esto solo en la configuración de depuración (usando la configuración de comstackción de Indicadores Preprocesadores Adicionales y algunos #ifdefs).

Use el siguiente código:

 NSString *cacheDir=[NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) objectAtIndex:0]; [[NSFileManager defaultManager]removeItemAtPath:cacheDir error:nil]; 

Para veloz 3

 //to remove cache from UIWebview URLCache.shared.removeAllCachedResponses() if let cookies = HTTPCookieStorage.shared.cookies { for cookie in cookies { HTTPCookieStorage.shared.deleteCookie(cookie) } }