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



目前,我正在使用一个应用程序,该应用需要多次调用后端服务器。在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 *连接= [nsurlConnection sendsynchronousrequest:请求returningResponse:nil错误: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,safari立即响应。)

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

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

我也有一个类似的问题,因为在3G连接上自然而然的问题会根据发送的数据量而稍慢。但是,如果我发送同步请求的要求比异步方法更快。我注意到的是,在使用异步的3G连接上,操作系统必须关闭连接,您可能会在日志" purgeidlecellconnections:找到一个用于清除conn"的日志中,似乎增加了一些时间来执行方法。

最新更新