Почему этот код WebRequest работает медленно?
Я запросил 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) ему все еще нужно проверить заголовки с удаленного сервера, чтобы узнать, обновлено ли оно (что я и хочу сделать в моем приложении) 2) Я не Получив тело, мой код должен запрашивать только заголовок. Итак, как мне решить это?