ios - ¿NSURLCache es persistente en todos los lanzamientos?
(1)
NSURLCache
almacena en caché automáticamente las solicitudes de solicitudes realizadas a través de NSURLConnection
y UIWebView
s de acuerdo con la respuesta de caché del servidor, la configuración de caché y la política de caché de la solicitud. Estas respuestas se almacenan en la memoria y en el disco durante la vida útil de la memoria caché.
Aparte
Validé el comportamiento con el siguiente código. No necesita utilizar ninguno de los siguientes en su propio código. Esto es solo para demostrar cómo confirmé el comportamiento.
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
// Prime the cache.
[NSURLCache sharedURLCache];
sleep(1); // Again, this is for demonstration purposes only. I wouldn''t do this in a real app.
// Choose a long cached URL.
NSURLRequest *request = [[NSURLRequest alloc] initWithURL:[NSURL URLWithString:@"http://cdn.sstatic.net/stackoverflow/img/favicon.ico"]];
// Check the cache.
NSCachedURLResponse *cachedResponse = [[NSURLCache sharedURLCache] cachedResponseForRequest:request];
NSLog(cachedResponse ? @"Cached response found!" : @"No cached response found.");
// Load the file.
[NSURLConnection sendSynchronousRequest:request returningResponse:NULL error:NULL];
return YES;
}
El código hace lo siguiente:
- Prime el caché. Noté un comportamiento en el que la memoria caché no devolvería el resultado almacenado en caché hasta que la memoria caché se hubiera inicializado y tuviera la oportunidad de escanear el disco.
- Crea una solicitud para un archivo en caché largo.
- Comprueba si existe una respuesta para la URL y muestra el estado.
- Carga la URL.
En la primera carga, debería ver "No se encontró respuesta en caché". En las siguientes ejecuciones, verá "¡Se encontró una respuesta en caché!"
Estoy buscando una solución de almacenamiento en caché de red para mi aplicación de iOS que sea persistente en todos los lanzamientos. Comencé a leer sobre NSURLCache, pero no vi ninguna mención con respecto a la persistencia. ¿Alguien sabe cómo se comporta esto cuando usa NSURLCache y luego cierra y abre la aplicación? ¿Persiste?