![](/img/trans.png)
[英]asp.net website (development) takes very long to load first time (C# / Visual Studio 2012)
[英]Long time to load first connection in C# .NET
我正在制作一個連接到網站並從中下載XML的程序。 然后,它將信息顯示給用戶。
我遇到的問題是,當我第一次打開程序並開始下載XML信息時,這花費了很長時間。 當我從該站點加載另一個頁面且該程序仍處於打開狀態時,下載大約需要半秒鍾。 我想知道是否有任何方法可以避免這種情況。
我目前使用HttpWebRequest下載流,並使用StreamReader讀取它。 然后,我使用XLINQ解析XML。
嘗試顯式設置代理。 如果您沒有定義代理,則HttpRequest
類將花費時間搜索一個。 一旦找到(或未找到),它將在應用程序的生命周期內使用該信息,從而加快后續請求的速度。
//internally sets "ProxySet" to true, so won't search for a proxy
request.Proxy = null;
您也可以在.config中定義它:
<system.net>
<defaultProxy
enabled="false"
useDefaultCredentials="false" >
<proxy/>
<bypasslist/>
<module/>
</defaultProxy>
</system.net>
第一次延遲可能是由於以下原因造成的:
要弄清楚哪個部分需要時間,請使用System.Diagnostics.Stopwatch()在代碼中插入一些時間:
// this is the time to get the XML doc from the server, including the time to resolve DNS, get proxy etc.
System.Diagnostics.Stopwatch timer = new System.Diagnostics.Stopwatch();
timer.Start();
HttpWebResponse resp = (HttpWebResponse)request.GetResponse();
timer.Stop();
Console.WriteLine("XML download took: " + timer.ElapsedMilliseconds);
timer.Start();
// now, do your XLinq stuff here...
timer.Stop();
Console.WriteLine("XLinq took: " + timer.ElapsedMilliseconds);
您可以圍繞它插入一個循環,並查看第一個請求和后續請求之間各個組件的區別是什么。
如果發現差異在於下載而不是查詢,則可以使用Wireshark獲得網絡嗅探來進一步調查。
希望這可以幫助。
您可能需要做更多的研究才能弄清楚請求的哪一部分在第一遍中花費的時間更長。 我的第一個直覺是說,獲取您指定的域名的IP地址的DNS請求花費的時間更長,因為它不是在第一次運行時就被緩存的。 另一端的Web服務器也可能是您第一次查詢時必須運行一些啟動腳本的Web服務器。 您提到第一個請求需要很長時間,但是您沒有說多長時間。 這是否會引起一個大問題,即需要很長時間才能完成第一個請求,還是很煩人?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.