我正在构建一个高度依赖网页加载速度的应用程序。
我没有得到任何好的结果与c#上的HttpWebResponse。我得到了更好的结果与互联网浏览器,如Chrome和IE
下面是我收集的统计信息:
HttpWebResponse (c#) = 17秒/20个请求
Javascript/iFrame on Chrome = 9 seconds/20 requests
Javascript/iFrame on 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的性能?
每次按下按钮时都创建一个线程。创建线程是昂贵的,并且需要时间。尝试使用现有线程池中的线程(试试QueueUserWorkItem
),看看是否有帮助。