2

どの部分が原因なのかわからないので、Amazon CDN と iOS デバイスについて言及しました。

Amazon CDN で jpg ファイルと PDF ファイルをホストしています。多数の jpg および PDF ファイルをキューにダウンロードする iOS アプリケーションがあります。dataWithContentOfURL と ASIHttpRequest を使用してみましたが、同じ結果が得られます。ASIHttpRequest は少なくとも、ダウンロードに問題があることを示すコールバックを提供するので、強制的に再試行できます。

しかし、これは非常に頻繁に起こります。100 個のファイルのうち、通常 1 ~ 5 個のファイルを再ダウンロードする必要があります。ファイルサイズを確認すると、元のファイルサイズより小さくて開けません。通常、破損したファイルは毎回異なります。

これを別の ISP とネットワークで試しました。それは同じだ。

Amazon CDN で見逃した設定はありますか、それとも iOS ダウンロードで見逃した設定はありますか? ダウンロードのために大量のファイルをキューに入れることはお勧めできませんか?

4

2 に答える 2

0

iPhoneに一度に3つか4つ以上のアイテムをダウンロードすることはありません。実装の制限(とにかくまともです)やディスクスラッシングの可能性に関係なく、アプリがWi-Fiを必要とすることASIHTTPRequestを明示的にマークされていない限り(設定で)、3Gユースケースをコーディングする必要があります。Info.plist

ASIHTTPRequestこれらの操作を同時ではなく順次にするためのソリューションがそれ自体の中に存在します。ASIHTTPRequestオブジェクトをに追加しますASINetworkQueue(によって返されたオブジェクトで[ASINetworkQueue queue]問題ありません)。それらは次々に実行されます。

エラーが発生した場合、キューをに設定しない限り、キュー上のすべてのリクエストはデフォルトでキャンセルされることに注意してshouldCancelAllRequestsOnFailureくださいNO

編集:ダウンロードキューの使用についてすでに言及されていることに気づきました。したがって、デバイスよりも反対側の方が問題だと思います。キープアライブ設定が短すぎる、サーバーのリソースが少なすぎるためタイムアウトになる、サーバーとインターネットバックボーン間の物理リンクの一部が断続的に失敗するなど、さまざまな理由で接続が切断されている可能性があります。ただし、確かに、アプリを複数のデバイスでテストして、実際にそれを言えるようにするには、すべてのデバイスで一貫して失敗していることを確認する必要があります。

于 2011-08-26T01:49:49.287 に答える
0

同時ダウンロードの数を減らしてみてください:

ASIHTTPRequest.sharedQueue.maxConcurrentOperationCount = 2;

これにより、デフォルトの ASIHTTPRequest キューが変更されます。独自のキューを使用している場合は、代わりにその値を設定してください。

デフォルトは 4 です。これは、永続的な接続を使用し、すべてのコンテンツが同じサーバー上にある場合に、HTTP 1.1 RFC で推奨される制限を超えています。

于 2011-08-26T07:44:50.930 に答える