nsurlconnection nsurlrequest nsurlcache nsurlconnectiondelegate

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?