.Net: Comment simuler et mesurer une requête Web complète?
-
18-09-2019 - |
Question
Je suis en train de mesurer une demande avec WebRequest,
Mais je reçois des résultats significatifs plus petits, puis mesurer avec Firebug.
Je devine que c'est parce que certains contenus comme des images et CSS ne sont pas inclus.
Y at-il un moyen de mesurer une requête web complète?
Mon code:
public string GetPageHtmlTime(string strUrl)
{
WebRequest request = null;
WebResponse response = null;
HttpWebResponse httpCurrentWeResponse = null;
try
{
//making a request to the file.
request = WebRequest.Create(strUrl);
//set 5 seconds timeout for the request
request.Timeout = 5 * 1000;
//Stopwatch
Stopwatch sw = new Stopwatch();
sw.Start();
//get the server response
response = request.GetResponse();
httpCurrentWeResponse = (HttpWebResponse)response;
sw.Stop();
//if the http response return any type of failure
if (httpCurrentWeResponse.StatusCode != HttpStatusCode.OK || response == null)
return "Error: " + httpCurrentWeResponse.StatusCode;
response.Close();
//Return time:
return "OK time=" + sw.ElapsedMilliseconds.ToString("0,0");
}
catch (System.Exception ex)
{
return "Error: ex=" + ex.Message;
}
}
La solution
Je ne sais pas si c'est une option pour vous, mais vous pouvez utiliser le contrôle de WebBrowser, car il demandera tous les éléments de la page avant de déclencher l'événement DocumentCompleted
.
Autres conseils
Votre code mesurera seulement combien de temps il faut pour le code complet, le code ne sera pas attendre que tous les octets pour arriver au niveau du client qui prendra beaucoup plus de temps que le code.
Que et où la mesure dépend de l'endroit où vous vous attendez à faire OPTIMISATIONS. Si vous voulez améliorer l'expérience au client lorsque le serveur est sous faible charge, puis Firebug (ou Fiddler) serait un bon endroit pour être la mesure. Si vous wan't pour améliorer les performances sur le serveur lorsque sa sous une lourde charge alors profileurs de code serait le genre d'outil vous aurions besoin.