下载速度连接各不相同 - 第一次需要更长时间 - 为什么?

时间:2011-07-29 09:48:17

标签: ios download connection

我的应用需要在发布时下载一些数据(约50k)。我目前正在评估几种情况下的下载速度,特别是连接速度慢。

我有一些简单的测试代码如下所示。一个按钮开始下载文件并开始测量,测量结束时是下载完成(所有这些都在主线程btw中运行)。

第一次按下按钮时,下载的时间比按顺序按下按钮的时间长(比如2s后)。如果我等待10秒再按一次,时间会再次变长。

这是为什么?是否需要花费很多时间才能进行初始连接?我知道下面的代码非常原始。什么是更快地获得连接的最佳方式。

编辑:我假设这肯定与ISP /电话公司处理互联网连接的方式有关。可能是这样,当我不主动使用网络时,我的ISP的互联网连接被剥离到一定的最小值?然后,当我下载某些内容时,会添加更多“频道”以提高速度? 我检查了几张SIM卡:数据速率越贵,行为越一致。比方说,如果我使用品牌A SIM,如果有上述行为,如果我使用品牌B(优质),一切都很好。

非常感谢提前


NSURL *url = [NSURL URLWithString:@"http://myServer/testFeed1.zip"];
NSData *urlData = [NSData dataWithContentsOfURL:url];

...保存文件

3 个答案:

答案 0 :(得分:1)

感谢您的输入,但这种行为绝对来自ISP的速度限制(当然是移动连接)。即使连接“看起来”很好(3G标志和良好接收),看到不同SIM卡之间的差异有多大也是很有趣的。 我确实使用了未缓存的方法,但它没有改变。

答案 1 :(得分:0)

也许是缓存..您可以使用此链接来验证:myServer / testFeed1.zip?<随机数>

答案 2 :(得分:0)

我不确定,但我认为dataWithContentsOfURL:实现了某种缓存。因此,您测量的时间越长,实际下载时间就越长。您可以查看是否尝试过以下操作:

NSError* error = nil;
NSData* data = [NSData dataWithContentsOfURL:yourURL options:NSDataReadingUncached error:&error];

如果缓存是原因,下载现在应该总是需要更长时间。 (我发现代码段here。)

<强>更新 如果下载时间是个问题,您应该考虑使用NSURLConnection进行异步下载。它将极大地改善用户体验。此外,您可以单独测量连接和下载时间。 Here's a simple example关于如何做到这一点。