我提到了 Amazon CDN 和 iOS 设备,因为我不确定哪个部分是罪魁祸首。
我在 Amazon CDN 中托管 jpg 和 PDF 文件。
我有一个 iOS 应用程序,可以在队列中下载大量 jpg 和 PDF 文件。我曾尝试使用 dataWithContentOfURL 和 ASIHttpRequest,但得到了相同的结果。 ASIHttpRequest 至少给了一个回调,表明下载有问题,所以我可以强制它重试。
但这种情况经常发生。在 100 个文件中,通常需要重新下载 1-5 个文件。如果我检查文件大小,它小于原始文件大小并且无法打开。
损坏的文件通常每次都不同。
我在不同的 ISP 和网络上试过这个。一样的。
是否有我在 Amazon CDN 中遗漏的配置,或者我在 iOS 下载中遗漏了其他配置?不建议排队下载大量文件吗?
最佳答案
我不会在 iPhone 上一次下载超过 3 或 4 个项目。不管实现限制(ASIHTTPRequest
还是不错的)或磁盘抖动的可能性,您必须为 3G 用例编写代码,除非您的应用程序明确标记(如 Info.plist
设置)它需要 Wi- Fi。ASIHTTPRequest
中存在解决方案本身使这些操作顺序而不是并发。添加您的ASIHTTPRequest
反对 ASINetworkQueue
([ASINetworkQueue queue]
返回的那个就可以了)。他们将一个接一个地被处决。
请注意,如果您遇到任何错误,默认情况下将取消队列上的所有请求,除非您设置队列的 shouldCancelAllRequestsOnFailure
至NO
.
编辑:我刚刚注意到您已经提到使用下载队列。因此,我怀疑这在另一端比在您的设备上更成问题。连接可能由于各种原因而中断:保持事件设置太短,服务器上的资源太少,因此超时,服务器和 Internet 主干之间的某些物理链接间歇性地出现故障。不过,可以肯定的是,您可能需要在多台设备上测试您的应用程序,以确保它在所有设备上始终失败,才能真正做到这一点。
关于ios - 从 Amazon CDN 到 iOS 设备的频繁下载损坏/不完整的原因是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7199094/