AFNetworking / NSURLConnection HTTPS mantener vivo muestra comportamientos extraños

Actualmente estamos lidiando con problemas de performance en nuestra aplicación y creemos que algunos de estos problemas podrían estar relacionados con el hecho de que la aplicación y la stack de networking AFNetworking subyacente parecen ignorar keep-alive en HTTP 1.1.

Recibimos información de Apple de que las conexiones persistentes se purgan después de 3, 6 o 30 segundos respectivamente, según la versión de iOS y la conectividad Wi-Fi / WWAN, independientemente de la información de mantenimiento del lado del server.

Al monitorear los apretones de manos de connection en nuestros serveres, notamos el comportamiento extraño de que una connection SSL de nuestra aplicación en un dispositivo iOS se deja abierta y no se cierra con un package FIN. Tan pronto como se hace una nueva request desde la aplicación, la connection izquierda de la request previa se ENTONCES se cierra con un package FIN y se crea una nueva connection.

Si bien entendemos que iOS purga las conexiones para mantener el consumo de batería bajo, nos preguntamos que no termina la connection existente correctamente y difiere esa terminación al inicio de una nueva request.

¿Alguien podría explicar este comportamiento y sugerir soluciones para evitar costosos apretones de manos de SSL en conexiones que están cubiertas por keep-alive bajo condiciones regulares?

Me encontré con el mismo problema hace algunas semanas. La solución era obligar al server web a ignorar el encabezado HTTP keepalive del dispositivo iOs y cerrar la connection de inmediato.