Я делаю веб-запрос, который является слишком медленным. Требуется приблизительно 3,2 секунды к GetResponseStream () и.8 секунд к ReadToEnd ()
Если я выполняю тот же запрос в веб-браузере, я получаю ответ в меньше, чем секунда... Я задаюсь вопросом, что я могу сделать для ускорения запроса и что могло бы заставить его быть медленным?
На основе других вопросов я видел здесь, я отключил прокси в app.config +, включил макс. соединения, на всякий случай (это все еще медленно). Раздел, который я добавил, был:
Вот снимок экрана того, на что похож код и что является медленным:
Я ценил бы любую справку... 4-8 секунд, слишком очень хотят, чтобы пользователь ожидал запроса ajax для завершения.
Спасибо!
Строка
responseReader = new StreamReader(webRequest.GetResponse().GetResponseStream());
выполняет сразу 3 действия:
Чтобы улучшить анализ времени и, следовательно, понять, где находится узкое место, сначала следует перекодировать раздел, чтобы разделить задачи.
HttpWebResponse response = WebRequest.GetResponse();
Stream s = response.GetResponseStream();
reader = new StreamReader(s);
В блоке finally
вам просто нужно закрыть средство чтения, так как это также закрывает базовый поток. Вместо явного закрытия потока вы можете рассмотреть возможность использования блока using
для считывателя.
using (Stream s = response.GetResponseStream()) {
StreamReader reader = new StreamReader(s);
responseData = reader.ReadToEnd();
}
Я знаю, что это не решение, но, возможно, оно дает немного больше информации о том, где теряется время.
И последнее предложение: рассмотрите возможность использования асинхронного выполнения, чтобы сократить продолжительность выполнения, воспринимаемую пользователем.