ユーザー データをダウンロードするために、データ サーバーに対して複数の URL 要求を行うアプリがあります。10 個のリクエストを並行して行うことで、ダウンロード時間を短縮しようとしています。これを行うためにいくつかの異なる方法を試しましたが、結果として、10 個の要求を (ほぼ) 同時に送信しても、一度に 1 つのデータしか受信できません。これは、すべてのリクエストを連続して行った場合と合計ダウンロード時間は同じであることを意味します。これが私が試したさまざまなことです。
- NSURLConnection オブジェクトを持ち、その NSURLConnection のデリゲートとして機能する NSOperation のサブクラスを作成しました。この NSOperation サブクラスの 10 個のインスタンスを NSOperationQueue に追加しました。
- 10 個の NSURLConnection オブジェクトを作成し、次々と開始しました。(応答をまっすぐに保つことができるように、個別のデリゲート オブジェクトを使用します。)
どちらの場合も、データを正しくダウンロードするのに問題はありませんが、どちらも期待したほど速くデータを受信しません。サーバーがリクエストに応答するのにかかる時間は、約 0.5 ~ 1.0 秒です。したがって、リクエストが実際に並行して送信される場合、最大 1 秒で 10 件すべてのレスポンスが返されると予想されます。2 つのアプローチの両方で、NSURLConnections がすべて約 5 ミリ秒以内に開始されることを観察しましたが、リクエストの connect:didReceiveResponse メソッドは、リクエストが連続して行われているかのように、約 0.7 秒間隔で次々と呼び出されます。 .
NSURLConnections または NSOperationQueues の仕組みについて誤解していませんか? どんな助けでも大歓迎です。ありがとう!