遅延が原因次の組み合わせにすることができ、初めて:サーバーのDNSを解決するための
- 時間をあなたはまた、.configファイルでこれを定義することができます
//internally sets "ProxySet" to true, so won't search for a proxy
request.Proxy = null;
エントリ
- autoconfigスクリプトをダウンロードし、 を実行して012を特定する時刻プロキシサーバーへのアプリから効果的なプロキシ
- ネットワークレイテンシ実際 先サーバーへ プロキシサーバから
- ネットワークレイテンシ(ご使用の環境でプロキシサーバがある場合)。
- のサーバーでXML ドキュメントを配信するまでの待ち時間。 のメモリ内オブジェクト表現をトラバースし、 がXML文書を生成する場合は、 に時間がかかることがあります。それは 文書を生成する XML-シリアル化のような技術を使用して ある場合も、その後、 シリアライザが設定されている方法に応じて、デシリアライズ/シリアライズする最初の の呼び出しは常に は という事実に、長い時間がかかります中間アセンブリは、 を生成してコンパイルする必要があります。
- XML の文書構造が非常に複雑な場合は、クライアント側でXMLを解析すると、時間がかかることがあります。
- (XmlSerializerを等)XLinq は、第1 要求は、後続のものよりも多くの時間がかかり、&クエリを解析するXML ための一時アセンブリを生成する場合。 (、時間がかかっているどの部分を見つけ出す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を使用してネットワークスニッフィングを取得してさらに調査することができます。
これが役に立ちます。
遅延は、初めてXMLを扱うウェブサイトに当たったときだけです。つまり、その後のヒットでXMLをすばやく取得しますか?もしそうなら、それはXMLを提供するWebアプリケーションの最初の起動遅延かもしれません... –
私はアップデートをチェックしている間に私のアップデートサーバでも起こります。私はhttp://google.comに接続してみました。それでも同じことをしました。 HttpWebRequestの代わりにWebClientを使用しても同じ結果が得られます。 – Christian
ああ、また、すべてのサーバーに接続すると、他のすべてのサーバーが高速に読み込まれます。 – Christian