Je dois capturer le temps qu'ASP.net prend pour exécuter chaque requête de page dans mon application, mais j'ai besoin d'exclure toute latence réseau. Je capture actuellement les temps de rendu en utilisant la classe StopWatch et en démarrant le chronomètre pendant la méthode OnInit du cycle de vie de la page et en l'arrêtant après la fin de la méthode Unload. Il semble que la méthode Unload inclue le temps qu'il faut pour envoyer la requête au client, incluant ainsi toute latence internet/réseau. Quel est le dernier point possible que je pourrais arrêter le chronomètre dans le cycle de vie de la page qui ne comprendrait pas le temps qu'il faut pour envoyer la demande au client. Serait-ce directement avant l'événement Unload?Capture du temps d'exécution du serveur ASP.Net sans latence réseau
Question connexe: Est-ce que ASP.net finit de générer la réponse avant qu'elle ne commence à être envoyée au client? Ou commence-t-il à envoyer de manière asynchrone, alors que la réponse est en train de se former? J'utilise actuellement ASP.Net 2.0 avec IIS 5.
Je possède ce code dans une classe que toutes mes pages héritent de:
readonly Stopwatch _serverExecutionTime = new Stopwatch();
protected override void OnInit(EventArgs e)
{
_serverExecutionTime.Start();
base.OnInit(e);
}
protected override void OnUnload(EventArgs e)
{
_serverExecutionTime.Stop();
base.OnUnload(e);
}
MISE À JOUR
J'ai essayé de capturer le temps d'exécution à la fin de la méthode OnRender, au début de la méthode OnUnload et à la fin de la méthode OnUnload. Dans les trois cas, la différence de temps était d'au plus 1 milliseconde. Même en testant cela depuis un client en Europe vers un serveur aux USA, les temps étaient identiques. Donc je pense qu'il me manque quelque chose ici.
Je suis d'accord avec le fait de faire la demande sur le même segment de réseau. Mais en ce qui concerne mon exemple de code, est le meilleur endroit pour capturer le temps avant base.OnUnload? – Jon
@Jon: Je le testerais au début de l'événement de déchargement OU à la fin de l'événement Render. – NotMe
J'ai essayé de capturer la valeur avant et après l'événement de déchargement. Les deux fois étaient presque identiques, même à partir de serveurs aux États-Unis et au Royaume-Uni. Au maximum, les temps étaient espacés d'une milliseconde. Malheureusement, cela ne m'aide pas. As-tu d'autres idées? – Jon