如何在HTTPS请求中提高HttpWebResponse的性能?

时间:2012-12-29 00:06:34

标签: c# https httpwebrequest httpwebresponse

我正在构建一个高度依赖于网页加载速度的应用程序。

我在C#上使用HttpWebResponse没有得到任何好结果。我通过Chrome和IE等互联网浏览器获得了更好的效果

以下是我收集的统计数据:

HttpWebResponse(C#)= 17秒/ 20个请求

Chrome上的Javascript / iFrame = 9秒/ 20次请求

IE上的Javascript / iFrame = 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();
}

我的老问题: How do I increase the performance of HttpWebResponse?

1 个答案:

答案 0 :(得分:1)

每次按下按钮时都会创建一个线程。创建一个线程很昂贵,并且需要时间。尝试使用现有线程池中的线程(尝试QueueUserWorkItem),看看是否有帮助。