C # WebClient действует медленно в первый раз - PullRequest
12 голосов
/ 08 февраля 2011

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

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

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

Ответы [ 3 ]

22 голосов
/ 08 февраля 2011

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

6 голосов
/ 09 августа 2012

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

image

3 голосов
/ 08 февраля 2011

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

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

...