2009-07-17 12 views
8

Auf meiner Bewerbung nach ASP.NET Tracing in einer ASP.NET MVC-Anwendung ermöglicht, waren die Zeitberechnung Statistiken aus um den Faktor 5000.Wie kann ich eine vollständige Trace.axd in ASP.NET MVC generieren?

ich eine Seite, die geladen wird zwischen 7 und 9 Sekunden stattfindet. 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 Layout, DOM oder Skriptausführung.)

Wenn ich jedoch die anwendungsweite Ablaufverfolgung einschalten (über web.config) und die Ablaufverfolgungsausgabe anzeigen, wird die Zeit angezeigt von "Begin PreInit" zu "End Render" ist weniger als 0,001 Sekunden.

Ich nehme an, dies liegt daran, dass Trace.axd mit WebForms erstellt wurde, und MVC umgeht den herkömmlichen Seitenlebenszyklus.

Aber selbst wenn ich benutzerdefinierte Spuren am Anfang und Ende von OnActionExecuting/OnActionExecuted hinzufügen, ist die Zeit immer noch weniger als 0,1 Sekunden.

Weiß jemand, wo in ASP.NET MVC ich haken muss, um die Trace.axd Ausgabe genaue Ausführungszeiten zu haben?

Antwort

7

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.

+1

+1 guter Punkt über Lazy loading – RedFilter

+0

Yup, OnResultExecuted zeigt eine Verzögerung von 9 Sekunden. Nun, um herauszufinden, warum ... (Ich leite() immer meine Linq, bevor ich sie dem Modell zuweise, also ist es keine verzögerte Ausführung. Ich denke, dass ich meine verschissenen Masterseiten als Schuldige ansehen könnte.) – Portman

Verwandte Themen