我提到亚马逊CDN和iOS设备是因为我不确定哪一部分是罪魁祸首。
我在Amazon CDN托管jpg和PDF文件,我有一个iOS应用程序,下载队列中的大量jpg和PDF文件,我尝试过使用dataWithContentOfURL和ASIHttpRequest,但我得到了相同的结果,ASIHttpRequest至少给出了一个回调,指示下载有问题,所以我可以强制它重试。
但这种情况经常发生。在100个文件中,通常有1-5个文件需要重新下载。如果我检查文件大小,它比原来的文件大小小,无法打开。损坏的文件通常每次都不一样。
我在不同的ISP和网络上试过了。都是一样的。
是我在Amazon CDN中遗漏了某个配置,还是我在iOS DOWnload中遗漏了其他什么?是否不建议对大量文件进行排队下载?
2条答案
按热度按时间u7up0aaq1#
我不会在iPhone上一次下载超过3到4个项目。不管实现限制(
ASIHTTPRequest
是不错的)或磁盘抖动的可能性,你必须为3G用例编写代码,除非你的应用程序明确标记(如Info.plist
设置)它需要Wi-Fi。ASIHTTPRequest
本身就有一个解决方案,可以使这些操作按顺序执行,而不是并发执行。将ASIHTTPRequest
对象添加到ASINetworkQueue
([ASINetworkQueue queue]
返回的对象就可以了)。它们将一个接一个地执行。请注意,如果遇到任何错误,默认情况下,队列中的所有请求都将被取消,除非您将队列的
shouldCancelAllRequestsOnFailure
设置为NO
。luaexgnf2#
您可以尝试减少并发下载的数量:
这将更改默认的ASIHTTPRequest队列-如果您使用自己的队列,请设置该队列的值。
默认值为4,当使用持久连接并且所有内容都在同一服务器上时,该值高于HTTP 1.1 RFC建议的限制。