it-swarm.com.de

ASP.NET MVC-Rendering scheint langsam zu sein

Ich habe eine brandneue MVC4-Webanwendung in Visual Studio erstellt und nichts weiter damit gemacht, als einen Home-Controller und eine Indexansicht für "Hallo Welt" hinzuzufügen. Ich habe dann das MiniProfiler NuGet-Paket installiert und die erforderlichen Zeilen in _Layout.cshtml. Folgendes erhalte ich, wenn ich die Site im Release-Modus (gehostet in IIS) ausführe:

MVC rendering picture

Die Renderzeit variiert von Seite zu Seite, aber 130 ms sind ungefähr so ​​schnell wie es nur geht. Dies scheint mir ein bisschen langsam zu sein, da ich andere Leute gesehen habe, die Seiten in 30 ms oder schneller gerendert bekommen. Irgendwelche Ideen, warum das Rendern bei einem brandneuen leeren MVC4-Projekt so langsam sein würde? Mein Prozessor ist ein Intel Core i5-2400 und der Computer verfügt über 16 GB RAM.

Dies ist übrigens nicht das erste Mal, dass die Seite geladen wird; Ich habe die Seite einige Male neu geladen, bevor ich das 130-ms-Ergebnis erhalten habe.

PDATE:
Ich habe den Rat in der Antwort von PSCoder befolgt (alles außer der RazorViewEngine entfernen) und die Renderzeit halbiert:

MVC rendering picture 2

Das ist wirklich gut, aber ich bekomme immer noch ungefähr 70 ms oder mehr für die Hauptaktion Render der Seite; idealerweise möchte ich das halbieren oder besser.

Konkret möchte ich fragen:

  • Scheint diese Renderzeit zu langsam zu sein oder ist sie für meinen Computer durchschnittlich?
  • Kann ich das auf irgendeine Weise beschleunigen?
47
Jez

Dies kann zur Verbesserung des mit ASP.NET MVC zusammenhängenden Leistungsproblems beitragen. Eine mögliche Leistungsverbesserung besteht darin, alle Ansichtsmodule zu löschen und die von Ihnen verwendeten Module hinzuzufügen. sagen Sie zum Beispiel: - RazorViewEngine. MVC registriert standardmäßig 2 Ansichtsmodule Webforms und Razor. Wenn Sie also die allein verwendeten Module löschen und hinzufügen, wird die Suchleistung verbessert.

Sie können dies in global.asaxApplication_Start Hinzufügen.

        ViewEngines.Engines.Clear();    
        ViewEngines.Engines.Add(new RazorViewEngine());      

Um das View-Look-Up-Caching und damit den Performance-Gewinn vollständig zu nutzen, kompilieren Sie den Code im Release-Modus und stellen Sie sicher, dass Ihre web.config - Datei mit <compilation debug="false" /> Konfiguriert ist, damit das View-Look-Up-Caching aktiviert wird.

76
PSL

Zur Antwort von @PSL hinzufügen - Wir suchen immer nur nach .CSHTML-Dateien

ViewEngines.Engines.Clear();

IViewEngine razorEngine = new RazorViewEngine() { FileExtensions = new string[] { "cshtml" } };

ViewEngines.Engines.Add(razorEngine);

Stellen Sie außerdem sicher, dass Sie Release Mode Ausführen - das ist absolut kritisch, da ASP/Razor/MVC ein ziemlich aggressives Caching anwendet . 'Im Freigabemodus

<compilation targetFramework="4.0" debug="false"> In Ihrer Web.Config - Datei.

Sam Saffron/Stack Overflow untersuchte auch die Renderleistung:

http://samsaffron.com/archive/2011/08/16/Oh+view+where+are+thou+finding+views+in+ASPNET+MVC3+

56
Stuart.Sklinar

Ansichten werden vor der Verwendung kompiliert - daher sind sie beim ersten Mal langsam.

Anschließend werden sie neu kompiliert, wenn das .cshtml Dateiänderungen - Dies bedeutet, dass die Verzeichnisse, in denen Ansichten gespeichert sind, überwacht werden. Daher ist die Festplattengeschwindigkeit ein Faktor für MVC-Ansichten.

Selbst wenn sie nichts tun, überprüft jede Rendering-Engine die Festplatte auf .cshtml oder .aspx Dateien. Da das Entfernen eines Rendering-Moduls dazu geführt hat, dass es doppelt so schnell ausgeführt wird, ist meines Erachtens die Festplattengeschwindigkeit das Problem:

  • Ansichten werden auf einem Netzlaufwerk gespeichert, oder
  • Die Festplatte ist sehr langsam
0
user1023602