我正在使用开源库连接到我的Web服务器。我担心Web服务器的运行速度非常慢,然后我尝试在Ruby中进行简单测试,得到了这些结果
我已经剖析并发现问题在于此功能:
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个请求的 ruby 程序则需要0.3秒。我也在127.0.0.1上进行了所有这些测试,因此网络带宽不是问题。
是什么原因导致这种巨大的速度下降?
更新
检查更改后的基准结果。我实际上测试了10个GET,而不是100个,我更新了结果。
最佳答案
我发现导致Web请求缓慢的主要原因是proxy属性。如果在调用GetResponse方法之前将此属性设置为null,则查询将跳过代理自动检测步骤:
request.Proxy = null;
using (var response = (HttpWebResponse)request.GetResponse())
{
}
在返回响应之前,代理自动检测最多需要7秒钟来查询。 HttpWebRequest对象的默认情况下设置此属性有点令人讨厌。