2010-01-18 30 views
0

我有一个iPhone应用程序,它以XML格式从不同来源获取信息。例如,我有一个UITableView被解析之后显示的信息,以XML格式,从一个URL这样一个http://mysite.com/posts.php?top=100 - >返回这样消费Web服务的iPhone应用程序如何避免性能损失?

<postsList><post><title>test1</title><pubDate>..</pubdate></item><post><title>test1</title><pubDate>..</pubdate></item></postsList> 

岗位信息,所以我有仅用于示出具有柱的表中的一个请求。当我点击一个单元格时,我必须对三个不同的源进行三次调用以收集我想要在单元格的细节中显示的数据。

我正在考虑编写一些ASP.NET C#web服务,当它被调用时,收集我需要的所有信息,并在显示初始UITableView时返回单个响应(所以我提出一个请求)。

XML响应将有10-15kb最大与包括所有的数据。从我的经验来看,从性能的角度来看,网络接入(无线或3G)在iPhone上的价格非常昂贵,如果可能的话,如果没有必要,我想避免它。

所以,问题是:这是一个好主意,从一个单一的请求得到尽可能多的数据可能还是更使仅在需要时数据(在这种情况下,当显示单元)的请求?

回答

3

如果你是一个缓慢的蜂窝连接上,延迟会伤害你比有限的带宽。这意味着建立连接需要很长时间,因为延迟。 如果你正在谈论10-15 kb,我会马上得到所有的数据(当然,你应该这样做异步)

假设你在一个GPRS连接,这是384kbps(在我们的至少国家)。延迟大约为500毫秒,因此建立HTTP连接可能需要大约1秒(最好的情况)。传输速度约为40KB/s。

使用一个单一的下载:

  • 1秒设置+ 0.5第二下载= 1.5秒

使用10次小下载:

  • 10 X 1第二设置+ 10 x 0.05秒下载= 10.5秒

这不是一个科学测试,但它只是表明你应该如何处理这些决定。

+0

使用ASIHTTPRequest将数据下载为异步。所以简而言之,编写.net Web服务并一次获取数据是一个好主意。 – 2010-01-18 12:33:36

+0

我一定会一次获得所有的数据(除非它是数百千字节) – 2010-01-18 12:35:55

0

我一直在处理这些问题上很多我当前的项目。它与3G性能和延迟有关,而实际的iPhone本身更多。即使数据量较大,一次下载也会更有效率。

所以我会同意菲利普。