2010-08-06 27 views
1

我需要从网络服务器下载帮助... 我目前所做的是从Web服务器获取XML文件,其中包含图像位置,解析XML,下载每个图像,在iPhone上存储图像,并将图像名称存储到sql数据库。 这需要大量的时间,因为有大量的图像被下载,我正在逐一下载。下载大量的图像,使其更快

我的应用程序更新刚刚拒绝了,因为审稿decieded的下载是太长了......有什么好笑的,最后两个更新没有问题通过..

我在想在服务器荏苒这些图像和发送压缩文件到iPhone,在那里解压缩,或用二进制打包图像并发送给苹果。

有关如何更快下载的任何建议,将不胜感激。谢谢。

+0

一般来说,我们确实需要更多的上下文,因为您为什么需要同时进行这么多大型下载。现在,整个问题似乎是一个坏主意。如果你不介意,我会说去链接到应用程序。 – 2010-08-06 19:45:33

+0

我觉得你可以在这里发布一个链接到应用程序,这对你理解你需要做的事情有很大的帮助。一些公司的数据也会有帮助 - 例如。那里有多少图像,以字节为单位的图像的平均大小是多少? – JosephH 2010-08-06 20:37:36

+0

http://itunes.apple.com/hr/app/crotune/id378647284?mt=8 所以你可以阅读在iTunes中的应用程序的描述,你会明白为什么我需要下载所有图像...我想客户采取应用程序,并使用它7天假期没有漫游费用在度假时。只有当他们有WiFi可用来检查更新... 我与我的客户谈过,他几乎同意将所有图像打包成二进制文件,但他说,他仍然会考虑它,所以这可能是一个解决方案。 这里会有大约3000个主题,每个图像大约有8k ... :-) – kviksilver 2010-08-06 22:37:20

回答

1

你经常改变这些图片吗?或者每次发布只有一次?如果他们随每次发布而改变,我只会将它们打包。如果他们几乎从未改变过,那就去下载一个巨大的下载文件(这样人们在更新时不必重新下载),如果他们经常改变,可以逐个文件地下载它们,但是一次尝试做2-3个文件异步下载(如果支持)。

+0

我的客户想要避免20MB数据上限,应用程序商店在没有wifi的情况下放置应用程序,一些图像每周更改一次。目前,应用程序通过检查服务器来管理已更改的映像,并询问上次更新和下载新映像时发生了什么变化,因此这些中间更新不是问题,只有第一个问题。如何将图像打包在一个大文件中并在iphone上解包? 认为我会减少网络连接,但会损失iphone所需的时间来解压这些文件... – kviksilver 2010-08-06 18:28:51

0

加速下载这些图像的一种方法是将它们放在CDN上。像Limelight这样的一些CDN可以将数据发送到移动设备进行特殊的网络优化。他们也只是在路由内容方面做得更好,并且具有更高的传输内容的能力。这种方法的好处是,你可能不需要改变你的应用程序。但是CDN可以是很昂贵的。

3

顺便说一句,压缩不会帮助图像。它们已经被压缩了,所以它只会增加开销。确保你的图像没有比你需要的显示大,我会做马里奥建议上面的,并在多个异步调用下载它们(至少使一个大的调用异步)。

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

如果您确实需要所有图片才能生效,您可以下载一些图片并将其显示为灰色(alpha = 0.4)或其他内容,以便清楚显示这是部分结果,但正在取得进展。审稿人可能认为创业时间太长。

+0

那么我让用户知道,下载将需要一些时间,每个下载的项目显示进度栏,全部通过这本书,他们仍然希望我减少时间来下载所有的东西.. 没有所有这些数据我的应用程序是无用的,我可以发布链接到应用程序本身(它是免费的),这样你可以检查UI设计的进一步帮助,如果需要?谢谢... – kviksilver 2010-08-06 18:35:58

+0

+1我真的怀疑你需要*所有*的图像为您的应用程序是可用的。 – 2010-08-06 19:06:37

+0

说拉链不会帮助并不完全正确。如果有很多小图像,则下载时间将由连接建立时间和每个项目的http头部开销所压缩。有一个zip文件可以通过一组头文件在单个连接中下载所有图像,这可能是一种改进。也就是说,使用zip文件似乎不太可能是这里最好的解决方案。 – JosephH 2010-08-06 20:37:17

0

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

而不是压缩文件,我敢肯定你需要缩小图像的大小。不仅如此,在您需要时,您只应下载所需的那些。

如果你仍然想要批量下载,为什么不把它作为一个选项而不是默认的实现?

1

1)我会使用类似于NSOperationQueue的东西在后台一次下载三个图像。更多的是,UI开始变得不稳定。

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

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

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