HttpWebRequest非常慢!

我正在使用开放源代码库连接到我的Web服务器。我担心Web服务器的运行速度非常慢,然后我尝试在Ruby中进行简单测试,得到了这些结果

Ruby程序:10个HTTP GET的2.11秒

Ruby程序:100个HTTP GET的18.13秒

C#库:10个HTTP GET的20.81秒

C#库:用于100个HTTP GET的36847.46秒

我已分析并发现问题在于此功能:

private HttpWebResponse GetRawResponse(HttpWebRequest request) {

HttpWebResponse raw = null;

try {

raw = (HttpWebResponse)request.GetResponse(); //This line!

}

catch (WebException ex) {

if (ex.Response is HttpWebResponse) {

raw = ex.Response as HttpWebResponse;

}

}

return raw;

}

标记行本身需要1秒钟才能完成,而发出1个请求的红宝石程序则需要0.3秒。我也在127.0.0.1上进行了所有这些测试,因此网络带宽不是问题。

查看更改后的基准结果。我实际上测试了10个GET,而不是100个,我更新了结果。

回答:

我发现代理请求是导致Web请求缓慢的罪魁祸首。如果在调用GetResponse方法之前将此属性设置为null,则查询将跳过代理自动检测步骤:

request.Proxy = null;

using (var response = (HttpWebResponse)request.GetResponse())

{

}

在返回响应之前,代理自动检测最多需要7秒钟来查询。HttpWebRequest对象的默认情况下设置此属性有点令人讨厌。

以上是 HttpWebRequest非常慢! 的全部内容, 来源链接: utcz.com/qa/429324.html

回到顶部