Долгое время для загрузки первого соединения в.NET C#

Вы рассматривали сжатие Ваших данных?

Как указано выше, мы испытываем недостаток в информации о точном характере Вашей проблемы, но сжатие данных для переноса их могло помочь.

6
задан Christian 12 September 2009 в 01:12
поделиться

3 ответа

Try explicitly setting the proxy. If you don't have a proxy defined, the HttpRequest class will spend time searching for one. Once it has (or hasn't) found one, it will use that information for the life of the application, speeding up subsequent requests.

//internally sets "ProxySet" to true, so won't search for a proxy
request.Proxy = null;

You can also define this in the .config:

<system.net>
  <defaultProxy
    enabled="false"
    useDefaultCredentials="false" >
    <proxy/>
    <bypasslist/>
    <module/>
  </defaultProxy>
</system.net>
14
ответ дан 8 December 2019 в 16:06
поделиться

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

0
ответ дан 8 December 2019 в 16:06
поделиться

Первая задержка по времени может быть вызвана комбинацией следующих факторов:

  1. Время разрешить запись DNS сервера
  2. Время загрузить прокси скрипт автонастройки, компиляция и выполнить его, чтобы определить эффективная задержка прокси
  3. сети от вашего приложения к прокси-серверу (если в вашей среде есть прокси-сервер)
  4. задержка сети с прокси-сервер к фактическому целевой сервер.
  5. Задержка на сервер для обслуживания XML документ. Если он должен пересечь представление объекта в памяти и сгенерировать XML-документ, который может занять некоторое время. Кроме того, если это используя такие методы, как XML-сериализация для создания документ, то в зависимости от того, как сериализатор настроен, первый вызов для сериализации / десериализации всегда занимает много времени из-за того, что что промежуточная сборка нуждается должны быть сгенерированы и скомпилированы.
  6. Анализ XML на стороне клиента может потребовать времени, особенно если XML структура документа очень сложна.
  7. Если XLinq (например, XMLSerializer) генерирует временную сборку для XML разбор и запросы, затем первый запрос займет больше времени, чем последующие.

Чтобы выяснить, какая часть требует времени, вставьте время входа в свой код с помощью System.Diagnostics.Stopwatch ():

// this is the time to get the XML doc from the server, including the time to resolve DNS, get proxy etc.
System.Diagnostics.Stopwatch timer = new System.Diagnostics.Stopwatch();
timer.Start();
HttpWebResponse resp = (HttpWebResponse)request.GetResponse();
timer.Stop();
Console.WriteLine("XML download took: " + timer.ElapsedMilliseconds);

timer.Start();
// now, do your XLinq stuff here...
timer.Stop();
Console.WriteLine("XLinq took: " + timer.ElapsedMilliseconds);

Вы можете вставить цикл вокруг этого и посмотреть, в чем разница для различных Компоненты между первым запросом и последующими запросами:

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

Надеюсь, это поможет.

1
ответ дан 8 December 2019 в 16:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: