Expira automáticamente NSURLCache con max-age = 0

Estoy usando NSURLCache con AFNetworking . El almacenamiento en caching funciona bien, pero no hay forma de comprobar si una respuesta se recuperó realmente del caching. Para comprobar si una versión almacenada en caching está disponible, uso

 [[NSURLCache shanetworkingURLCache] cachedResponseForRequest:_request]; 

para search una versión en caching de mi file.

Mi server está enviando los siguientes encabezados:

 Cache-Control:public, must-revalidate, max-age=0 ETag:"317a405bf9f69346c1f0438736a3d02e" 

Esto básicamente debería asegurarse de que la respuesta en caching esté obsoleta inmediatamente después de la descarga. Sin embargo, cachedResponseForRequest: aún carga la versión almacenada en antememory en el disco, incluso si realmente está caducada.

  • ¿ NSURLCache nunca caduca o no envío los encabezados correctos, etc.?
  • ¿Me estoy perdiendo algo más aquí?

EDITAR

También he intentado enviar

 Expires: "Mon, 27 May 2013 14:34:50 GMT" 

encabezado y la respuesta aún se devuelve desde el caching, incluso si ya expiró. Tengo la sensación de que NSURLCache no funciona correctamente …

NSURLCache es utilizado automáticamente por la mayoría de las API de networkinges iOS (como NSURLConnection). Solo necesita instanciar un object NSURLCache y configurarlo utilizando [NSURLCache setShanetworkingURLCache:] en algún lugar antes de realizar cualquier request de networking.

Incluso si se establece max-age = 0, si se proporciona ETag, NSURLCache tiene que almacenar la respuesta para que pueda enviar la siguiente request con el encabezado de request If-None-Match establecido en el valor ETag anterior. Si el server responde con 304, devuelve la respuesta almacenada en caching.

Entonces, creo que cachedResponseForRequest: devuelve la respuesta almacenada en caching, independientemente de si es realmente válida o no.

No necesitará get el caching directamente. Todo está administrado de forma transparente por iOS.