2009-05-15 20 views
0

Ich habe eine ASP.NET MVC App, die die AreaViewEngine von Phil Haack here vorgeschlagen verwendet. Es funktioniert gut, aber die App scheint irgendwie träge, also habe ich einige Profiling mit dotTrace gemacht. Ich schob die App auf unseren Dev-Server, änderte das Debug-Flag in web.config auf false (compilation debug = "false"), startete den Profiler und benutzte jmeter, um ein paar tausend Treffer zu generieren. Was ich fand, ist unten aufgeführt:asp.net mvc findpartialview Leistung

alt text http://i44.tinypic.com/av6e1c.jpg

Beachten Sie, wie VirtualPathProviderViewEngine.FindPartialView über 320 Sekunden gedauert. Ich kann nicht weiter aufschlüsseln, um zu sehen, welcher zugrunde liegende Code das Problem verursacht, aber ich vermute, dass es mit dem genannten Problem zusammenhängt here.

Der Blog besagt ausdrücklich, dass das Ausführen im Freigabemodus dazu führt, dass die Auflösung des Ansichtspfads zwischengespeichert wird, aber das scheint nicht der Fall zu sein (oder wenn es etwas anderes ist, nimmt verdammt viel Zeit in Anspruch) die FindPartialView Funktion

Irgendwelche Gedanken

Edit:.?

ich habe nie die Ursache für das Problem finden, aber ich am Ende für die Freigabe des MVC-Quellcode herunterzuladen 1.0 und es funktioniert gut. Muss eine Diskrepanz zwischen der installierbaren Binärdatei und der Sourc sein e-Code für v1.0. oder etwas, das mit meiner Installation funktioniert (obwohl sich das Problem auf mehreren Computern manifestiert hat).

Antwort

0

Wenn Sie RenderPartial() oder View() verwenden, können Sie den Pfad zur Ansicht so einstellen, dass er nicht danach suchen muss. Wenn Sie nur den Dateinamen angeben, müssen Sie feststellen, dass es sich nur um einen Dateinamen handelt. Suchen Sie dann in einer Liste von Ordnern nach der Ansicht.

+0

Ja, ich verstehe, aber wenn Sie den Artikel, den ich verlinkt, sehen, sollte die Arbeit, die für die Suche benötigt wird, nur einmal geschehen, wenn Debug deaktiviert ist, weil das Ergebnis zwischengespeichert werden sollte. Ich versuche herauszufinden, warum der Cache scheinbar nicht funktioniert. Ist es ein Fehler? Mache ich etwas falsch? Das ist meine Frage. – Chris