2013-02-06 8 views
12

Obecnie mamy problemy z wydajnością w naszej aplikacji i wierzymy, że niektóre z tych problemów mogą być związane z tym, że aplikacja i podstawowy stos sieci AFNetworking wydaje się zignoruj ​​utrzymywanie przy HTTP 1.1.AFNetworking/NSURLConnection HTTPS keep alive pokazuje dziwne zachowanie

Otrzymaliśmy informacje od Apple, że trwałe połączenia są usuwane po 3, 6 lub 30 sekundach odpowiednio, w zależności od wersji iOS i połączenia WiFi/WWAN, niezależnie od informacji utrzymywanych przez serwer.

Monitorując uściski połączeń na naszych serwerach, zauważyliśmy dziwne zachowanie, że połączenie SSL z naszej aplikacji na urządzeniu z iOS pozostaje otwarte i nie jest zamknięte przy użyciu pakietu FIN. Jak tylko nowe żądanie zostanie wysłane z aplikacji, lewe połączenie z poprzedniego żądania jest THEN zamknięte przy pomocy pakietu FIN i tworzone jest nowe połączenie.

Rozumiemy, że iOS usuwa połączenia, aby utrzymać niski poziom naładowania baterii, ale zastanawiamy się, czy to nie rozwiązuje prawidłowo istniejącego połączenia i odracza to zakończenie na początku nowego żądania.

Czy ktoś mógłby wytłumaczyć to zachowanie i zaproponować rozwiązania, które pozwolą uniknąć kosztownych uścisków dłoni SSL w połączeniach, które są utrzymywane przy życiu w normalnych warunkach?

+0

Które wersje systemu iOS mają wpływ? – Adam

+1

Jakie sesje WWDC? Nawiasem mówiąc, połączenie trwałe jest obsługiwane przez warstwę CFNetwork. I o ile wiem, nie ma interfejsu API, który mógłby zmienić zachowanie. Możesz rzucić okiem na to, w jaki sposób ASIHttpRequest obsługuje utrzymujące się połączenie.Tak więc ten problem nie jest związany z AFNetworking lub NSURLConnection. Sądzę, że najprawdopodobniej nie mamy nic do zrobienia. –

+0

@Adam - Z tego, co wiem z iOS 8, którego dotyczy. Oto inne pytanie, które jest nieco związane z http://stackoverflow.com/q/29063803/730807 –

Odpowiedz

0

Kilka tygodni temu wpadłem na ten sam problem. Rozwiązaniem było zmuszenie serwera WWW do zignorowania ciągłego nagłówka http z urządzenia iOs i natychmiastowego zamknięcia połączenia.

+0

masz na myśli powiedzieć, że skonfigurowałeś serwer WWW w takim sposób, który nie obsługuje utrzymujących się połączeń, więc problem nie przyjdzie –