gpt4 book ai didi

c# - 为什么这个 WebRequest 代码很慢?

转载 作者:可可西里 更新时间:2023-11-01 08:13:55 52 4
gpt4 key购买 nike

我请求了 100 页,所有 404。我写了

    {
var s = DateTime.Now;
for(int i=0; i < 100;i++)
DL.CheckExist("http://google.com/lol" + i.ToString() + ".jpg");
var e = DateTime.Now;
var d = e-s;
d=d;
Console.WriteLine(d);
}

static public bool CheckExist(string url)
{
HttpWebRequest wreq = null;
HttpWebResponse wresp = null;
bool ret = false;

try
{
wreq = (HttpWebRequest)WebRequest.Create(url);
wreq.KeepAlive = true;
wreq.Method = "HEAD";
wresp = (HttpWebResponse)wreq.GetResponse();
ret = true;
}
catch (System.Net.WebException)
{
}
finally
{
if (wresp != null)
wresp.Close();
}
return ret;
}

两次运行显示它需要 00:00:30.7968750 和 00:00:26.8750000。然后我尝试了 firefox 并使用以下代码

<html>
<body>
<script type="text/javascript">
for(var i=0; i<100; i++)
document.write("<img src=http://google.com/lol" + i + ".jpg><br>");
</script>

</body>
</html>

使用我的比赛时间并计算它大约是 4 秒。 4 秒比我的应用程序快 6.5-7.5 秒。我计划扫描数千个文件,因此花费 3.75 小时而不是 30 分钟将是一个大问题。我怎样才能使这段代码更快?我知道有人会说 firefox 缓存图像,但我想说 1) 它仍然需要检查远程服务器的 header 以查看它是否已更新(这是我希望我的应用程序执行的操作)2) 我不是收到正文,我的代码应该只请求 header 。那么,我该如何解决这个问题?

最佳答案

我注意到 HttpWebRequest 在第一个请求时挂起。我做了一些研究,似乎正在发生的事情是请求正在配置或自动检测代理。如果你设置

request.Proxy = null;

在 Web 请求对象上,您可以避免初始延迟。

使用代理自动检测:

using (var response = (HttpWebResponse)request.GetResponse()) //6,956 ms
{
}

没有代理自动检测:

request.Proxy = null;
using (var response = (HttpWebResponse)request.GetResponse()) //154 ms
{
}

关于c# - 为什么这个 WebRequest 代码很慢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/754333/

52 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com