In meiner Anwendung nach dem Aktivieren von ASP.NET-Ablaufverfolgung in einem ASP.NET MVC-Anwendung, die Zeit Berechnung Statistiken waren um einen Faktor von 5000 aus.
Ich habe eine Seite, die zwischen 7 und 9 Sekunden zum Laden benötigt. Dies wird sowohl von Firebug als auch vom Feld "time-take" in den IIS-Protokolldateien bestätigt. (Dies ist nur die Seite, die zum Client zurückkehrt, nicht irgendein Layout, DOM oder Skriptausführung.)
Wenn ich jedoch die anwendungsweite Ablaufverfolgung (über web.config) aktiviere und die Ablaufverfolgungsausgabe betrachte, beträgt die Zeit von "Beginne Vorinbetriebnahme" bis "Endwiedergabe" weniger als 0,001 Sekunden.
Ich gehe davon aus, dass Trace.axd mit WebForms erstellt wurde und MVC den herkömmlichen Seitenlebenszyklus umgeht.
Aber auch wenn ich am Anfang und Ende von benutzerdefinierte Ablaufverfolgungen hinzufüge OnActionExecuting / OnActionExecuted , die Zeit ist immer noch weniger als 0,1 Sekunden.
Weiß jemand, wo in ASP.NET MVC muss ich haken, um die genaue Ausführungszeit der trace.axd-Ausgabe Bericht zu haben?
Es könnte sein, dass die Zeit für die Aktionsmethode selbst nicht der große Teil der Ausführung ist. Überprüfen Sie die Zeit zwischen OnResultExecuting / OnResultExecuted. Dies ist im Grunde die Zeit, um die Seite tatsächlich in HTML zu rendern, während OnActionExecuting / OnActionExecuted (im Prinzip) die Zeit ist, um die Daten für die Ansicht einzurichten.
Beachten Sie, dass bei Verwendung von LINQ die Datenabfragen selbst zurückgestellt werden können, bis die Seite gerendert wird (das Modell wird aufgelistet). Das heißt, die Langsamkeit ist möglicherweise nicht auf Seitenkomplexität zurückzuführen, sondern auf Datenzugriff, selbst wenn die Zeit für die Ausführung des Ergebnisses benötigt wird.
Tags und Links asp.net-mvc trace