2009-06-29 8 views
0

Je souhaite afficher au bas de mes pages un simple texte "construit en x.yz secondes", pour vérifier facilement différentes options. (certaines pages sont construites en utilisant les paramètres entrés dans une page précédente par un utilisateur "régulier", qui aimerait voir aussi les résultats de ses décisions)Temps de construction de pages dans ASP.NET MVC et WebForms

Je sais que je peux utiliser des traces dans asp.net, mais ce n'est pas très facile à utiliser, et je crains que ce ne soit pas très bon pour la performance.

Pensez-vous que ce http://www.aspnetzone.de/blogs/peterbucher/archive/2008/03/16/requestdauer-mit-einem-httpmodule-und-response-filter-ausgeben.aspx (httpmodule, page Web en allemand) est une bonne solution?

Oh, et puisque je travaille sur plusieurs projets en ce moment, je voudrais le faire pour les pages et asp.net mvc :) webforms

Merci!

Répondre

0

Ne pas utiliser de traces dans le code de production! Peut lire l'allemand, mais j'implémenterais probablement cela en stockant simplement le DateTime actuel dans le constructeur de la page, puis en imprimant le décalage horaire entre l'heure actuelle et l'heure stockée dans l'événement OnPreRender pour l'étiquette qui va afficher l'heure - l'événement OnPreRender est le dernier point dans le cycle de vie des pages où il est possible de modifier le contenu de la page (sans effectuer de post-traitement)

Ceci devrait fonctionner correctement tant que vous ne le faites pas Ne faites aucun traitement lourd après l'événement OnPreRender de votre étiquette.

1

L'objet HttpContext contient un horodatage pour "start-of-http-request".

Je suppose que cela sera généralement suffisant, à moins qu'il ne soit important pour vous de soustraire le temps passé à attendre qu'un thread disponible devienne disponible.

donc temps de construction serait

DateTime.Now.Subtract(HttpContext.Current.Timestamp).TotalMilliseconds 

Si vous voulez que le temps le plus précis, vous pouvez stocker manuellement l'heure de départ dans global.asax

void Application_PreRequestHandlerExecute(object sender, EventArgs e) 
    { 
     HttpContext.Current.Session.Add("LastPageStart", DateTime.Now); 
    } 

et soustraire de l'heure de fin à

Application_EndRequest 

Le journal le log4net, ou un tel. Bien sûr, si vous avez besoin de le montrer en bas de la page, au lieu de simplement avoir l'information pour surveiller l'état de santé, alors vous pourriez probablement le soustraire manuellement sur la page.

Questions connexes