iOS不使用http keep-alive。 非常高的延迟

我想testing我的服务器延迟,所以我发送了一个rest请求。 使用restapi客户端,我从桌面得到了大约500毫秒的延迟,但是当我在iOS模拟器(使用AFNetworking)做同样的请求时,我得到1.8秒的延迟。

我的服务器发送保持活动标题,我注意到,从我的电脑的第一个请求是有一个类似的IOS延迟。 我如何让iOS荣誉保持活力或减less延迟? 由于我正在制作实时应用程序,因此我必须具有低延迟。 在同一台计算机上,我的rest客户端比iOS快了约3倍。 我该如何解决这个问题?

编辑::我注意到,从我的服务器禁用https支持时,延迟变成1秒。 对我来说,很明显,有一些问题,iOS不使用保持活着。

我使用wireshark监视networking活动。 下面是以大约1秒为间隔的两个http请求的图片: 在这里输入图像说明

可以看出,encryption握手正在进行两次。

使用我的rest客户端,这是在2秒的时间间隔相同的http请求是这样的:

在这里输入图像说明

没有看到任何代码,很难确定发生了什么,但要确保:

  • 请求在同一个会话中。 每个会话使用不同的底层连接,所以如果会话消失,连接也会消失。
  • 这些请求使用相同的authentication凭证(如果适用)。

另外,请尝试启用HTTPShouldUsePipelining 。 如果同一台服务器有多个请求在运行,则至less(至less)最后一个请求到达时,连接将不会closures,因此即使操作系统正在积极pipe理电源,也可能会有所帮助。

Interesting Posts