Pregunta

Estamos construyendo una aplicación de iOS que usa AFnetworking para conectarse a un servidor que ejecuta Tornado.El servidor incluye el encabezado Cache-Control: private, max-age=900 en la respuesta.Al ejecutar el servidor en mi máquina local, puedo decir que AFnetworking utiliza los valores en caché porque no hay solicitudes recibidas por el servidor en las solicitudes repetidas de la aplicación.Cuando implementamos el mismo servidor Tornado en la máquina de prueba, cada solicitud de la aplicación da como resultado una solicitud recibida en el servidor, ignorando el valor en caché.

La única diferencia entre las dos configuraciones es la URL del servidor y el hecho de que se accede al servidor de prueba a través de una conexión HTTPS, mientras que el LocalHost utiliza HTTP.¿El HTTPS afecta al almacenamiento en caché por afnetworking, y de ser así, ¿cómo podemos obtener AFNETWorking para respetar el encabezado de caché?

¿Fue útil?

Solución

No estoy seguro si va a ser cualquier ayuda, pero aquí está de todos modos: AFNETWorking utiliza NSurlConnection, que utiliza el caché compartido de NSurlcache. AFNETWorking absolutamente transparente en la memoria caché y no hace nada específico. Mis solicitudes son HTTPS y estaban en caché bien.

Las directivas de respuesta de control de caché permiten que un servidor de origen anule la caída predeterminada de una respuesta: privado Indica que todo o parte del mensaje de respuesta está destinado a un solo usuario y no debe almacenarse en caché por un caché compartido. Esto permite que un servidor de origen indique que las partes especificadas de la La respuesta está destinada a un solo usuario y no es una respuesta válida para las solicitudes por otros usuarios. Un caché privado (no compartido) puede almacenar en caché la respuesta. http://www.w3.org/protocols/RFC2616/RFC2616-SEC14.HTML# SEC14.9.1

Si es aceptable intente cambiar la política al público. Registre los encabezados en respuesta de la aplicación y mire su cache.db y vea si, de hecho, algo está en caché allí.

Intenta configurar el caché compartido: algo a lo largo de las líneas de

int cacheSizeMemory = 1*1024*1024; // 4MB
int cacheSizeDisk = 100*1024*1024; // 100MB
[[NSURLCache sharedURLCache] setMemoryCapacity:cacheSizeMemory];
[[NSURLCache sharedURLCache] setDiskCapacity:cacheSizeDisk];

Otra buena lea sobre esto aquí http://petersteinberger.com/blog/2012/nsurlcache-eses -A-Disk-Cache-AS-OF-iOS5 /

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top