【问题标题】:Three second https connection times on 3G networks3G 网络上的三秒 https 连接时间
【发布时间】:2012-09-10 01:39:50
【问题描述】:

在 3G 网络上 Ping 到服务器的时间为 80 毫秒,与 Wifi 上的(60 毫秒)大致相同,但建立 SSL 连接的时间在 3G 上为 3.5 秒,在 Wifi 上为 0.5 秒。这与同时使用笔记本电脑和 iPhone 作为客户端相同。

3G 塔不忙。互联网连接基本上是空闲的。

如果我在 Wifi 中运行手机,对服务器进行 70 毫秒的 ping 操作,连接握手时间会快 6 倍 - 大约半秒,考虑到 ssl 握手细节,这大致是我所希望的。

这正常吗?我只在弗吉尼亚州的 AWS (heroku) 的一台服务器上对其进行了测试,从我的办公室对 Wifi 进行 50 毫秒的 ping 测试。在所有情况下,服务器都会在大约 40 毫秒左右的时间内构建和响应 10kB 的数据。

3G真的那么慢吗?或者我可以对 NSURLConnection 等进行一些调整以加快握手速度?

这是在请求之间休眠的 3G 无线电吗? - 我不这么认为,即使我通过 ping 保持 3g 收音机开启,(比如说)同样的事情也会发生。

【问题讨论】:

  • 阴谋角度:连接时间长是因为3G服务提供商需要伪造一个虚假的SSL证书来窥探你的活动。严重:我可能是偏执狂,但请检查 SSL 证书是否有效。
  • 另外,如果您尝试相同的连接,但在 443 或 80 以外的端口上会发生什么?

标签: iphone ios ssl https ssl-certificate


【解决方案1】:

我实际上并不是 100% 确定这是答案。

手机上的 GSM 蜂窝无线电会尽可能长时间关闭以节省电池。当您启动应用程序时,只要您请求网络资源,收音机就会打开。大约需要一秒钟? (不确定)启动收音机。

所以很难改进。到目前为止,我发现的唯一一件事是在 main.m 中使用 NSURLConnection - 没有设置委托。这对我来说加快了大约 0.3 秒 - 到达代码中我真正想要上网的点所需的时间。

请注意,如果您实际上不需要上网,这会浪费电池!

    // warm up the radio ASAP. It seems to take over a second for the radio to turn on.
    // This saves about a quarter of a second or so. 404 is typically a fast easy response for a server. 
    NSURLRequest* request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://yoursite.com/wedonthavethis/"]];
    [NSURLConnection connectionWithRequest:request delegate:nil];

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-30
    • 2015-11-06
    • 1970-01-01
    • 2015-08-24
    相关资源
    最近更新 更多