Estoy intentando descubrir cómo usar el marco de carga de URL para cargar URL aprovechando el almacenamiento en caché.¿NSURLConnection se aprovecha de NSURLCache?
Estoy usando NSURLConnections y les proporciono NSURLRequests. Incluso he configurado el cachePolicy en esas solicitudes a NSURLRequestReturnCacheDataElseLoad. La primera vez que cargo una solicitud, automáticamente se pone en el caché ([NSURLCache sharedCache]
lo tiene). Pero la próxima vez que cargue la misma solicitud, NSURLConnection parece ignorar lo que hay en la caché y volver a cargar los datos.
¿Se supone que debo implementar manualmente las búsquedas en caché y devolver los datos en caché? ¿NSURLConnection no hace esto? ¿O hay alguna forma de conseguir que el framework use el cache sin problemas?
ACTUALIZACIÓN: intentado lo siguiente sin éxito:
- Configuración de la directiva de solicitud de caché para
NSURLRequestReturnCacheDataElseLoad
en lugar deNSURLRequestUseProtocolCachePolicy
- reutilizar el objeto de la petición en lugar de hacer una nueva
- Usando
+[NSURLConnection sendSynchronousRequest:returningResponse:error:]
en lugar de cargar de forma asíncrona
¿Los está alimentando con el mismo objeto NSURLRequest? La documentación indica que NSURLCache funciona al mapear un objeto específico NSURLRequest a los datos de respuesta especificados, por lo que es posible que incluso si está realizando una solicitud a la misma URL, aún se produzca un error en la caché. – ImHuntingWabbits
No, estoy haciendo una nueva solicitud de NSURL. Pero cuando hago '[[NSURLCache sharedURLCache] cachedResponseForRequest:]' con ese nuevo objeto de solicitud, hay una respuesta en caché. Entonces NSURLCache sabe de alguna manera que las solicitudes son las mismas. – jasoncrawford
PD: intenté reutilizar el objeto NSURLRequest. No hace la diferencia – jasoncrawford