ディスクに保存したいパブリックWebサーバー上のHTMLページを指す約100万のURLがあります。これらはそれぞれほぼ同じサイズで、約30キロバイトです。私のURLリストはディスク上の20個のフォルダーにほぼ均等に分割されているため、簡単にするために、フォルダーごとに1つのタスクを作成し、各タスクでURLを順番にダウンロードします。つまり、いつでも約20の並列リクエストが得られます。私は比較的安っぽいDSL、5mbps接続を使用しています。
これは数ギガバイトのデータに相当するため、プロセスには数時間かかると予想していますが、このアプローチをさらに効率的にすることができるかどうか疑問に思っています。接続を最大限に活用している可能性がありますか?どうすればそれを測定できますか?20の並列ダウンロードは適切な番号ですか、それともダイヤルアップまたはダイヤルダウンする必要がありますか?
言語はF#です。すべてのURLにWebClient.DownloadFileを使用しており、タスクごとに1つのWebClientを使用しています。
==================================
編集:大きな違いをもたらした1つのことは、リクエストに特定のヘッダーを追加することでした:
let webClient = new WebClient()
webClient.Headers.Add(HttpRequestHeader.AcceptEncoding, "gzip,deflate")
これにより、ダウンロードのサイズが約32kから9kに削減され、速度が大幅に向上し、ディスク容量が節約されます。言及してくれたTerryEに感謝します!