【问题标题】:Download speed connection varies - first time takes much longer - why?下载速度连接各不相同 - 第一次需要更长的时间 - 为什么?
【发布时间】:2011-07-29 09:48:17
【问题描述】:

我的应用需要在启动时下载一些数据(大约 50k)。我目前正在评估几种情况下的下载速度,尤其是连接速度较慢的情况。

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

第一次按下按钮时,下载的时间比我随后按下按钮(比如 2 秒后)要长得多。如果我等10秒再推,时间又会变长。

这是为什么?建立初始连接是否需要花费那么多时间?我知道下面的代码非常原始。什么是更快建立连接的最佳方式。

编辑:我假设这肯定与 ISP/电话公司处理 Internet 连接的方式有关。可能是,当我不积极使用网络时,我的 ISP 的 Internet 连接会被缩减到某个最低限度?然后,当我下载某些东西时,会添加更多“频道”以提高速度吗? 我检查了几张 SIM 卡:数据速率越高,行为越一致。比如说,如果我使用品牌 A SIM,如果有上述行为,如果我使用品牌 B(高级),一切都很好。

在此先感谢


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

…保存文件

【问题讨论】:

  • 下载的文件是否可能缓存在某处?
  • 可以缓存在透明的 ISP 上运行 HTTP 代理或类似的。

标签: ios download connection


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    可能已缓存.. 您可以使用此链接来验证:myServer/testFeed1.zip?

    【讨论】:

    • 我刚试过这个:我复制文件9次,重命名,然后下载文件。似乎第一次下载需要很长时间(8秒),接下来的下载更快(1.5秒)。缓存也会出现这种情况吗?我想不会吧?
    【解决方案3】:

    我不确定,但我认为dataWithContentsOfURL: 实现了某种缓存。因此,您测量的时间越长,实际下载时间就越长。如果您尝试了以下方法,您会发现:

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

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

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

    【讨论】:

    • 谢谢你,我一定会的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-02
    • 2019-11-25
    相关资源
    最近更新 更多