para otros memoria limpiar como cache borrar basura archivos app aplicaciones apartado iphone uiwebview

iphone - otros - ¿Cómo borrar el caché de UIWebView?



como limpiar mi iphone de archivos basura (8)

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


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 cada respuesta en , sin éxito.

Lo que finalmente hizo el truco fue crear una subclase NSURLCache que reemplaza -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 en el directorio de la aplicación en iOS).

Como puede ver por el nombre, lo uso solo en la configuración de depuración (usando la configuración de compilación de Indicadores de preprocesador adicionales y algunos #ifdefs).


He tenido este problema yo mismo con los archivos de script y css que están en caché.

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

<script src=''myurl?t=1234''> ...

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


Usa el siguiente código:

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


Utilizando

[[NSURLCache sharedURLCache] removeAllCachedResponses];

ANTES de hacer 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 puede 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 la memoria caché de la última solicitud y llamo para eliminar toda la otra memoria caché (creo que esto no es tan importante) - Luego creo una solicitud nsurlrequest e ignoringLocalCacheData - finalmente, cargue la nueva solicitud

Lo reviso y recargo todos los archivos (html, css, js e imágenes).


Para swift 3

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


// Flush all cached data [[NSURLCache sharedURLCache] removeAllCachedResponses];


//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 Se borrará la memoria caché de url de su aplicación.


NSURLRequest* request = [NSURLRequest requestWithURL:fileURL cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:60.0]; [webView loadRequest:request];

(ahora con error tipográfico)