2012-12-29 23 views
0

我正在構建一個高度依賴網頁加載速度的應用程序。如何提高HTTPS請求上的HttpWebResponse性能?

我在C#上沒有得到任何好的結果HttpWebResponse。我得到更好的結果與互聯網瀏覽器Chrome和IE

下面是我收集到的統計數據:

HttpWebResponse(C#)= 17秒/ 20的要求

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

我的老問題: How do I increase the performance of HttpWebResponse?

+0

這與以前的問題有何不同? – Polity

+0

並不多,我添加了更多的細節,並問了一件事。我也明確表示問題在於使用HTTPS。我很抱歉,如果它看起來一樣,但在閱讀並嘗試了很多可能的解決方案之後,我厭倦了嘗試,我想我可以再次提出要求,使其更清晰。 – Tumay

回答

1

你正在創建一個線程,每次按下按鈕。創建一個線程非常昂貴並且需要時間。嘗試使用現有線程池中的線程(嘗試QueueUserWorkItem)並查看是否有幫助。

+1

甚至更​​好,請嘗試http://msdn.microsoft.com/en-us/library/system.net.http.httpclient.aspx並使用新的Async方法,並等待以查看是否獲得更好的性能。 – Ameen

+0

感謝您的回覆,我是C#的新手,所以您可能是對的。我會看看是否有幫助。我只按一次按鈕,我不確定這是否重要。 – Tumay