AFNetworking/NSURLConnection HTTPS 保持活动显示奇怪的行为

Posted

技术标签:

【中文标题】AFNetworking/NSURLConnection HTTPS 保持活动显示奇怪的行为【英文标题】:AFNetworking/NSURLConnection HTTPS keep alive shows strange behaviour 【发布时间】:2013-01-21 15:04:00 【问题描述】:

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

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

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

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

有人可以解释这种行为,并提出解决方案,以避免在常规条件下由 keep-alive 覆盖的连接中进行昂贵的 SSL 握手吗?

【问题讨论】:

哪些版本的 iOS 受到影响? 哪个 WWDC 会话?顺便说一句,持久连接由 CFNetwork 层处理。据我所知,没有 API 可以改变行为。你可以看看 ASIHttpRequest 是如何支持持久连接的。所以这个问题与 AFNetworking 或 NSURLConnection 无关。而且我想我们很可能无事可做。 @Adam - 据我所知,iOS 8 受到影响。这是另一个与 ***.com/q/29063803/730807 有点相关的问题 【参考方案1】:

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

【讨论】:

您的意思是说您已将网络服务器配置为不支持保持连接的方式,因此问题不会出现

以上是关于AFNetworking/NSURLConnection HTTPS 保持活动显示奇怪的行为的主要内容,如果未能解决你的问题,请参考以下文章