0

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

我在 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();
}

我的老问题: 如何提高 HttpWebResponse 的性能?

4

1 回答 1

1

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

于 2012-12-29T00:45:16.107 回答