iOS - 连接到后端API服务器时3G连接速度慢的问题

时间:2012-11-05 20:19:04

标签: iphone objective-c connection nsurlconnection 3g

目前我正在开发一个需要多次调用后端服务器的App。 在WiFi上,应用程序连接正常并且下载速度非常快,但在3G上连接似乎有点不稳定且非常慢。

所以我做了一些非常简单的测试用例(你可以在下面找到)。并且似乎NSURLConnection没有以相同的响应速度获取数据。

(请注意我删除了我连接的真实服务器的URL)

测试用例:

在服务器上放置以下php脚本:

<?php echo 'hello world' ?>

抓住iPhone,关闭WiFi并确保它有正确的3G连接。

使用以下Objective-C代码连接到服务器:

  

NSURL * url = [NSURL URLWithString:@“http://someserver.com/test.php”];

     

NSURLRequest * request = [NSURLRequest requestWithURL:url];

     

NSDate * startDate = [NSDate date];

     

的NSLog(@ “START”);

     

NSURLConnection * connection = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];

     

NSLog(@“%3.2f”, - [startDate timeIntervalSinceNow]);

返回3G - 1.47秒。因此,如果您是第一次使用3G连接,这可能是正常的,因为它需要初始化。但现在是有趣的部分。如果您多次重复此调用,则会返回以下内容:

1.47秒

2.33秒

1.1秒

我使用两个不同的iPhone和两个不同的提供商测试了这个:T-Mobile和KPN。我也尝试使用我通常使用的NSURLConnection的异步版本,但这也会返回相同的结果。

(我也做过的其他事情:检查Apple的Reachabilty.h,通过用ip-number替换服务器url来删除DNS查找,使用其他服务器并使用https://www.google.nl/search?q=%i,arc4random(),试过[NSString alloc] initWithContentOfURL]。除了使用iPhone浏览器外,所有人都返回了类似的结果:Safari,立即响应。)

我也使用Android手机测试了类似的东西,但随后我获得了500ms的快速响应(使用相同的提供商)。

之前有人遇到过这个吗?如果是这样,您是如何解决此问题以及连接导致此问题的原因?

1 个答案:

答案 0 :(得分:0)

我有一个类似的问题,因为在3g连接中,post请求会稍微慢一些,具体取决于发送的数据量。但是,如果我通过同步请求发送它比异步方法更快。我注意到,在使用async的3g连接上,操作系统必须关闭连接,你可能会注意到日志&#34; purgeIdleCellConnections:找到一个清除conn&#34;似乎为方法执行增加了一些时间。