我正在构建一个高度依赖于网页加载速度的应用程序。
我在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?
答案 0 :(得分:1)
每次按下按钮时都会创建一个线程。创建一个线程很昂贵,并且需要时间。尝试使用现有线程池中的线程(尝试QueueUserWorkItem
),看看是否有帮助。