2011-01-24 36 views
0

我们在iPhone上有一个应用程序。此应用程序每页/屏幕显示25个产品。所有25种产品的产品名称,价格,折扣,产品图像的URL等文本项目首先从服务器下载。从服务器上下载iPhone上的图像时的性能问题

之后,我们做出25个同步请求,一个接一个下载25个产品图像。每幅图像的大小约为25KB,大小约为300×400像素,我们只需要72×72像素大小的图像用于在iPhone上显示。我们注意到,显示一个屏幕/页面大约需要40秒,而这种表现并不好。所以我们正在研究如何提高性能。

  1. 如果我们将服务器上的图像大小缩小到72 pxiels 72,性能是否会提高?
  2. 也有可能从服务器下载所有25个图像到iPhone?如果可以,请分享您的方法以了解如何做到这一点?我们只有在能够提高性能的情况下才会这样做。

回答

2

1.如果您将它们的大小调整为72x72,那么总体上可以下载的尺寸更小,因此速度更快。

2.for batching我没有解决方案,但你可以尝试为每个文件做一个异步请求。下载时放置了一个临时图像(一个标志或其他)。当下载图像时,用新的图像替换临时图像。 您可以将图像放入缓存中,以免每次都下载它们。

异步下载你可以使用ASIHTTPRequest(它也有一个缓存类)。

如果你做同步请求,那么你的GUI将冻结,直到他们完成。

+0

+1打我给它上几乎所有的重要。 :-) –

+0

这很好。性能会显着提高,我们会在一个请求中异步下载?你怎么看? – mohang

+0

ASIHTTPRequest无法进行批量下载(对于每个需要下载请求的文件)。它有一个队列,它添加下载请求并处理它们(如果我没有记错,你可以设置一次处理的最大请求数)。如果您调整图像大小并将其下载为异步,则您的应用的性能会更好。 –

0

首先,缩放服务器上的图像是完全不用费脑筋的 - 不需要下载任何更多的数据。

一旦你这样做了,你会看到显着的性能改进,你可以通过使用占位符图像和异步下载真实图像在后台进一步增加。 (ASIHTTPRequest库对于这样的功能来说是一个很好的包装。)

最后,如果合适,你应该使用图像缓存并在本地存储图像(可能在SQLite数据库中引用)。但是,您需要偶尔执行维护以将其保持在合理的文件大小限制内。

相关问题