使用 C# 下载多个网页的最快方法
这是我目前拥有的(基本)示例:
foreach (var uri in uris)
{
using (var client = new WebClient())
{
client.Proxy = null;
client.DownloadStringCompleted += DownloadComplete;
client.DownloadStringAsync(uri);
}
}
有更快的方法吗?
This is a (basic) example of what I currently have:
foreach (var uri in uris)
{
using (var client = new WebClient())
{
client.Proxy = null;
client.DownloadStringCompleted += DownloadComplete;
client.DownloadStringAsync(uri);
}
}
Is there a faster way?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
重要的是并行下载,由于异步下载,您已经在这样做了。
代码的下载速度完全取决于实际的网络传输速度,因此尽其所能。
The important thing is to make the downloads in parallel, which you are already doing thanks to the Async download.
The download speed of your code is entirely dependent of the actual network transfer speed, so it is as good as it gets.
我相信,如果您将 Accept-Encoding 标头设置为 gzip,deflate,如果服务器支持 gzip(现代 Web 服务器应该支持),您可以使其速度更快。
基本思想是在下载之前要求服务器压缩内容,通常对于普通网页,您可能会减少 50% 的大小,因此可以节省 50% 的时间。
查看 这篇关于 C#feeds 的文章。
I believe you can make it a lot faster if you set Accept-Encoding header to gzip,deflate, if the server support gzip (modern web server should support).
The basic idea is to ask the server zip the content before downloading, normally for a common web page, you may get 50% less in size and hence you can save 50% time.
Look at this article on C#feeds.