在3G网络上,对服务器的Ping是80ms,与Wifi上的相同(60ms),但建立SSL连接的时间在3G上是3.5秒,在Wifi上是0.5秒。使用笔记本电脑和iPhone作为客户端时,这是相同的。
3G信号塔并不繁忙。互联网连接基本上是空闲的。
如果我在Wifi中运行手机,服务器的ping信号为70ms,连接握手时间要快6倍-大约半秒,考虑到ssl握手的细节,这大致是我所能希望的。
这是正常的吗?我只在弗吉尼亚州的AWS (heroku)的一台服务器上测试过它,从我的办公室到Wifi上大约需要50ms的ping。在所有情况下,服务器在大约40毫秒左右的时间内构建并响应10kB的数据。
3G真的那么慢吗?或者,我可以对NSURLConnection等做一些调整,让握手更快吗?
这是3G无线电在请求之间休眠吗?-我不这么认为,因为即使我让3g无线电保持ping,(比方说)同样的事情也会发生。
发布于 2012-09-12 00:17:02
实际上,我不是百分之百确定这就是答案。
为了节省电池,手机上的GSM蜂窝无线电会尽可能长时间地关闭。当您启动应用程序时,只要您请求web资源,收音机就会立即打开。大概需要一秒钟?(这一点不太确定)来启动无线电。
所以很难改进。到目前为止,我发现的唯一一件事就是在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];https://stackoverflow.com/questions/12344456
复制相似问题