C# WebClient действует медленно в первый раз

Я использую WebClient для загрузки строки с веб-сайта (который содержит простой текст, ничего больше), поэтому я использую метод DownloadString:

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

он работает нормально, но проблема в том, что при первой загрузке строки требуется много времени, например 5 секунд. После этого он работает быстро. Почему это происходит и как можно решить эту проблему?

3 ответов


задание Proxy свойства WebClient объект null должен устранить задержки, которые вы видите. В качестве альтернативы, если вы настроили свою систему на использование прокси-сервера, его можно получить с помощью WebRequest.GetSystemWebProxy. Второй метод должен устранить задержку в любом случае.


Я заметил то же самое. DotTrace показывает, что он тратит большую часть своего времени на перечисление параметров прокси:


Ну, в первый раз ему нужно выполнить поиск DNS и подключиться к хосту - после этого в рамках того же процесса он вполне может повторно использовать то же соединение. Для самой первой просьбы в любом месте, возможно и пытается обнаружить параметры прокси-сервера и т. д.

Если вы хотите увидеть, что на самом деле происходит на сетевом уровне, чтобы сделать его медленным, я предлагаю вам захватить помощью Wireshark и контролировать трафик с этого.