Как повысить производительность HttpWebResponse при HTTPS-запросах?

Я создаю приложение, которое сильно зависит от скорости загрузки веб-страницы.

Я не получаю хороших результатов с HttpWebResponse на С#. Я получаю лучшие результаты с интернет-браузерами, такими как Chrome и IE

Вот статистика, которую я собрал:

HttpWebResponse (C#) = 17 секунд/20 запросов

Javascript/iFrame в Chrome = 9 секунд/20 запросов

Javascript/iFrame в IE = 11 секунд/20 запросов

Вопрос 1 Что я могу сделать, чтобы оптимизировать мой код для повышения производительности?

Вопрос 2. Я могу дважды нажать кнопку "Пуск" и открыть два соединения, чтобы достичь производительности браузера. Это прекрасно работает, однако веб-сайт, на который я отправляю запрос, имеет ограничение. Если я отправлю новый запрос до завершения другого, он заблокирует мое соединение на 10 минут. Есть ли способ предотвратить это?

Моя тема:

void DomainThreadNamecheapStart()
{
    while (stop == false)
    {
        foreach (string FromDomainList in DomainList.Lines)
        {
            if (FromDomainList.Length > 1)
            {
                // I removed my api parameters from the string
                string namecheapapi = "https://api.namecheap.com/foo" + FromDomainList + "bar";

                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(namecheapapi);
                request.Proxy = null;
                request.ServicePoint.Expect100Continue = false;

                HttpWebResponse response = (HttpWebResponse)request.GetResponse();
                StreamReader sr = new StreamReader(response.GetResponseStream());

                status.Text = FromDomainList + "\n" + sr.ReadToEnd();

                sr.Close();
            }
        }
    }
}

Моя кнопка:

private void button2_Click(object sender, EventArgs e)
{
    stop = false;
    Thread DomainThread = new Thread(new ThreadStart(DomainThreadNamecheapStart));
    DomainThread.Start();
}

Мой старый вопрос: Как повысить производительность HttpWebResponse?


person Tumay    schedule 29.12.2012    source источник
comment
Чем это отличается от вашего предыдущего вопроса?   -  person Polity    schedule 29.12.2012
comment
Не так много, я добавил больше деталей и спросил еще одну вещь. Я также дал понять, что проблема связана с использованием HTTPS. Прошу прощения, если это выглядит так же, но, прочитав и испробовав множество возможных решений, я устал пытаться и подумал, что могу спросить еще раз, чтобы было понятнее.   -  person Tumay    schedule 29.12.2012


Ответы (1)


Вы создаете поток каждый раз, когда нажимаете кнопку. Создание потока дорого и требует времени само по себе. Попробуйте использовать поток из существующего пула потоков (попробуйте QueueUserWorkItem) и посмотрите, поможет ли это.

person Ameen    schedule 29.12.2012
comment
Еще лучше попробуйте msdn.microsoft.com/en- us/library/ и используйте новые асинхронные методы и выполните ожидание, чтобы увидеть, повысится ли производительность. - person Ameen; 29.12.2012
comment
Спасибо за ответ, я новичок в С#, так что вы можете быть правы. Я посмотрю и посмотрю, поможет ли это. Я нажимаю кнопку только один раз, я не уверен, имеет ли это значение. - person Tumay; 29.12.2012