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

150
20

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


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

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

спросил(а) 2021-01-19T18:53:07+03:00 2 месяца, 3 недели назад
1
Решение
200

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

ответил(а) 2021-01-19T18:53:07+03:00 2 месяца, 3 недели назад
115

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

VuVrB.png

ответил(а) 2021-01-19T18:53:07+03:00 2 месяца, 3 недели назад
86

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


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

ответил(а) 2021-01-19T18:53:07+03:00 2 месяца, 3 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема