我有大约一百万个指向公共 Web 服务器上的 HTML 页面的 URL,我想将它们保存到我的磁盘中。每一个的大小都差不多,大约 30 KB。我的 url 列表被平均分配在磁盘上的 20 个文件夹中,因此为简单起见,我为每个文件夹创建一个任务,并且在每个任务中我依次下载一个 URL 一个接一个。所以这随时给我大约 20 个并行请求。我使用的是一个相对糟糕的 DSL,5mbps 连接。
这代表了几 GB 的数据,因此我预计该过程需要几个小时,但我想知道是否可以使该方法更有效。我是否有可能充分利用我的联系?我该如何衡量呢?20 次并行下载是一个好数字还是我应该向上或向下拨号?
语言是 F#,我对每个 url 使用 WebClient.DownloadFile,每个任务一个 WebClient。
====================================
编辑:产生巨大差异的一件事是在请求中添加了某个标头:
let webClient = new WebClient()
webClient.Headers.Add(HttpRequestHeader.AcceptEncoding, "gzip,deflate")
这将下载大小从大约 32k 减少到 9k,从而极大地提高了速度并节省了磁盘空间。感谢 TerryE 提到它!