【问题标题】:iOS doesn't to use http keep-alive. Very high latencyiOS 不使用 http keep-alive。非常高的延迟
【发布时间】:2016-12-10 22:50:17
【问题描述】:

我想测试我的服务器的延迟,所以我发送了一个休息请求。 使用 rest api 客户端,我从桌面获得了大约 500 毫秒的延迟,但是当我在 iOS 模拟器(使用 AFNetworking)上执行相同的请求时,我得到了 1.8 秒的延迟。

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

编辑:: 我注意到在我的服务器禁用 https 支持后,延迟变为 1 秒。对我来说,很明显 iOS 不使用 keep alive 存在一些问题。

我使用wireshark 监控网络活动。下面是大约 1 秒间隔发出的两个 http 请求的图片:

可以看出,加密握手进行了两次。

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

【问题讨论】:

    标签: ios performance afnetworking keep-alive


    【解决方案1】:

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

    • 请求在同一个会话中。每个会话都使用单独的底层连接,因此如果会话消失,连接也会消失。
    • 请求使用相同的身份验证凭据(如果适用)。

    此外,请尝试启用HTTPShouldUsePipelining。如果同一服务器有多个请求在进行中,则连接不会在(至少)最后一个到达之前关闭,因此即使操作系统正在积极管理电源,这有时也可能会有所帮助。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-10-25
    • 2013-03-25
    • 1970-01-01
    • 1970-01-01
    • 2017-07-31
    • 1970-01-01
    • 2020-09-18
    相关资源
    最近更新 更多