nsurlconnection - ¿Cómo saber si un NSURLResponse proviene de la caché?
nsurlrequest nsurlcache (1)
Buen artículo aquí sobre el problema:
http://andrewmarinov.com/ioss-corenetwork-lying/
Básicamente, desde el NSHTTPURL, el código de estado es siempre 200
Entonces, si realmente necesita saberlo, puede verificar que el elemento esté en el caché antes de realizar la solicitud.
NSCachedURLResponse *cachedResponse = [[NSURLCache sharedURLCache] cachedResponseForRequest:request];
NSHTTPURLResponse *httpCacheResponse = (NSHTTPURLResponse *)cachedResponse.response;
Si es así, guarde el encabezado ''etag'' o ''fecha modificada'' modificado
NSString* etag = httpCacheResponse.allHeaderFields[@"etag"];
Luego, en el controlador de respuesta, verifique que etag o la fecha de modificación sea la misma. Si es así, la respuesta fue desde el caché!
Configuré NSURLCache en una carpeta específica (../../Application Support / Offline para que el sistema operativo no lo elimine al azar), luego envío una NSURLRequest con NSURLRequestReturnCacheDataElseLoad.
¿Cómo puedo saber que la respuesta, manejada por una clase conforme a NSURLConnectionDelegate, proviene de la caché o de la red?