12

我们目前正在处理我们的应用程序中的性能问题,我们认为其中一些问题可能与应用程序和底层 AFNetworking 网络堆栈似乎忽略 HTTP 1.1 上的 keep-alive 的事实有关。

我们从 Apple 获得的信息表明,持久连接分别在 3、6 或 30 秒后被清除,具体取决于 iOS 版本和 WiFi/WWAN 连接,无论服务器端保持活动信息如何。

在监控服务器上的连接握手时,我们注意到来自 iOS 设备上的应用程序的 SSL 连接保持打开状态而不是通过 FIN 数据包关闭的奇怪行为。一旦从应用程序发出新请求,前一个请求的剩余连接就会使用 FIN 数据包关闭,并创建一个新连接。

虽然我们知道 iOS 会清除连接以保持低电池消耗,但我们想知道它没有正确终止现有连接并将该终止推迟到新请求的开始。

有人可以解释这种行为,并提出解决方案来避免在常规条件下保持活动覆盖的连接中昂贵的 SSL 握手吗?

4

1 回答 1

0

几周前我遇到了同样的问题。解决方案是强制网络服务器忽略来自 iOs 设备的 keepalive http 标头并立即关闭连接。

于 2013-05-16T20:09:01.513 回答