Il primo tempo di ritardo può essere dovuto ad una combinazione dei seguenti elementi:
- tempo per risolvere il DNS del server voce
- Tempo per scaricare il proxy script autoconfig, compilare e eseguirlo per determinare lo efficace delega
- rete latenza dalla tua app al server proxy (se v'è un server proxy nell'ambiente)
- rete latenza dal il server proxy per il server effettivo destinazione.
- La latenza su il server per servire il documento XML . Se deve attraversare una rappresentazione dell'oggetto in memoria e generare il documento XML, che potrebbe richiedere del tempo. Inoltre, se è usando tecniche come XML-serializzazione per generare il documento , poi a seconda di come il serializzatore è configurato, il primo chiamata a serializzare/deserializzare sempre richiede molto tempo, a causa del fatto che un assemblaggio intermedio necessita di da generare e compilare.
- L'analisi del codice XML sul lato client potrebbe richiedere tempo, specialmente se la struttura del documento XML è molto complessa.
- Se XLinq (come il XMLSerializer) genera il montaggio temporaneo per l'XML parsing & interrogazione, quindi la prima richiesta ci vorrà più tempo di quanto i quelle successive.
di capire quale parte sta prendendo tempo, inserire qualche tempo accedendo al proprio codice usando 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);
È possibile inserire un ciclo intorno a questo, e vedere che cosa il la differenza per i vari componenti tra la prima richiesta e le richieste successive è.
Se si riscontra che la differenza è nel download, e non nell'interrogazione, è possibile esaminare ulteriormente ottenendo uno sniffing di rete utilizzando Wireshark.
Spero che questo aiuti.
Il ritardo è solo la prima volta che si colpisce il sito Web di pubblicazione XML, ovvero in caso di hit successivi recupera rapidamente l'XML? In tal caso potrebbe essere il ritardo iniziale di avvio dell'applicazione Web XML ... –
Accade anche con il mio server di aggiornamento mentre sto verificando la disponibilità di aggiornamenti, ho anche provato a connettermi a http://google.com e ha fatto ancora la stessa cosa Stessi risultati con un WebClient anziché con HttpWebRequest. – Christian
Oh e anche, una volta che mi collego a QUALSIASI server tutti gli altri server si caricano velocemente. – Christian