【问题标题】:Fastest way to download multiple webpages using C#使用 C# 下载多个网页的最快方法
【发布时间】:2011-09-18 18:05:41
【问题描述】:

这是我目前拥有的(基本)示例:

foreach (var uri in uris)
{
    using (var client = new WebClient())
    {
        client.Proxy = null;
        client.DownloadStringCompleted += DownloadComplete;
        client.DownloadStringAsync(uri);
    }
}

有没有更快的方法?

【问题讨论】:

  • 如果这是您的真实代码,那么您的using 有问题。 client 对象将立即释放,取消下载。您必须删除using,而是从DownloadComplete 方法中调用Dispose()

标签: c# .net performance download webclient


【解决方案1】:

重要的是进行并行下载,这要归功于异步下载。

你的代码的下载速度完全取决于实际的网络传输速度,所以它是最好的。

【讨论】:

  • 谢谢,我就是这么想的,但很高兴得到确认。
【解决方案2】:

如果服务器支持 gzip(现代 Web 服务器应该支持),我相信如果您将 Accept-Encoding 标头设置为 gzip,deflate,您可以使其更快。

基本思路是在下载内容之前先让服务器对内容进行压缩,通常对于普通网页,您可能会缩小 50% 的大小,因此可以节省 50% 的时间。

看看这个:http://csharpfeeds.com/post/5518/HttpWebRequest_and_GZip_Http_Responses.aspx

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-09-06
    • 1970-01-01
    • 1970-01-01
    • 2011-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多