C#WebClient第一次表现得很慢

时间:2011-02-08 11:38:24

标签: c# .net performance download webclient

我正在使用WebClient从网站下载字符串(只包含纯文本,没有别的),所以我使用DownloadString方法:

WebClient wc = new WebClient();
string str = wc.DownloadString("http://blah");

它工作正常,但问题是它第一次下载字符串需要很长时间,比如5秒。之后它运作得很快。为什么会发生这种情况?如何解决这个问题?

3 个答案:

答案 0 :(得分:22)

Proxy对象的WebClient属性设置为null可以消除您看到的延迟。或者,如果您已将系统配置为使用代理,则可以使用WebRequest.GetSystemWebProxy检索它。第二种方法应该消除任何一种情况下的延迟。

答案 1 :(得分:6)

我注意到了同样的事情。 DotTrace显示它花费大部分时间来枚举代理选项:

答案 2 :(得分:3)

嗯,第一次需要进行DNS查找并连接到主机 - 之后,在同一个进程中,它可能会重用相同的连接。对于任何地方的第一个请求,它可能试图检测代理设置等。

如果你想看到网络层面发生了什么事情让它变慢,我建议你抓住Wireshark并用它来监控流量。