下载大量图像,使其更快

时间:2010-08-06 18:01:15

标签: iphone objective-c cocoa-touch webrequest

我需要从网络服务器下载帮助... 我目前所做的是从包含图像位置的Web服务器获取XML文件,解析XML,下载每个图像,在iphone上存储图像,以及将图像名称存储到sql数据库。 这需要花费大量时间,因为有大量图像需要下载,我一个接一个地下载。

我的应用更新刚被拒绝,因为评论家认为下载太长了......有趣的是,最后两次更新没有出现问题..

我正考虑在服务器上压缩这些图像并将zip文件发送到iphone,在那里解压缩,或者将图像与二进制打包在一起并发送给苹果。

有关如何加快下载速度的任何建议,我们将不胜感激。感谢。

5 个答案:

答案 0 :(得分:3)

BTW,zip对图像没有帮助。它们已经被压缩,因此只会增加开销。确保你的图像不比显示所需的大,我会做Mario上面建议的并在多个异步调用中下载它们(至少让一个大调用异步。)

UI设计的一个关键原则是显示部分结果(除非它们无效或误导),以便用户了解正在取得进展。

如果您确实需要所有图像使其有效,您可以下载一些图像并将其显示为灰色(alpha = 0.4)或其他内容,以便明确这是部分结果,但正在取得进展。审稿人可能觉得启动时间太长了。

答案 1 :(得分:1)

您经常更换这些图片吗?或者每次发布只有一次?如果它们随每个版本而改变,我就会打包它们。如果他们几乎从未改变过,那么请进行一次大量下载(这样人们不必在更新时重新下载),如果他们经常更换,请逐个文件下载,但尝试一次使用2-3个文件异步下载(如果支持)。

答案 2 :(得分:1)

1)我会使用像NSOperationQueue这样的东西在后台一次下载三个图像。不止于此,UI开始变得不稳定。

2)在此过程中还会显示某种加载指示器。

3)你的图像采用什么格式?如果您通过网络进行转移,则应使用JPG,并考虑将质量等级设置为更小(例如6甚至5)。为了抵消质量损失,您可以发送更大的图像,即使使用较大数量的像素,您也可以通过较低质量的压缩轻松获得更好的效果。

4)如果必须使用PNG来保持透明度,请考虑在发送之前在图像上使用PNGCrush。如上所述,zip几乎没有任何作用。

答案 3 :(得分:0)

加快下载这些图像的一种方法是将它们放在CDN上。一些CDN(如Limelight)具有特殊的网络优化功能,可以将数据发送到移动设备。他们还可以更好地路由内容,并具有更高的传输内容的能力。这种方法有什么好处,你可能不必更改你的应用程序。然而,CDN可能是昂贵的。

答案 4 :(得分:0)

可能,您的图片太大了。你说你担心20MB的应用程序限制,但我认为在那一点上,你的图像对于手机来说太大了。

我非常确定你需要对图像的大小进行缩减采样,而不是压缩文件。不仅如此,您应该只在需要时下载所需的那些。

如果您仍想进行批量下载,为什么不将其作为副选项而不是默认实现呢?