J'ai créé une toute nouvelle application Web MVC4 dans Visual Studio, et je n'ai rien fait de plus avec cela que d'y ajouter un contrôleur Home et une vue d'index "Hello world". J'ai ensuite installé le package MiniProfiler NuGet et mis le couple de lignes nécessaire dans _Layout.cshtml
. Voici ce que j'obtiens lorsque j'exécute le site en mode Release (hébergé dans IIS):
Le temps de rendu varie selon la charge de page, mais 130 ms est à peu près aussi rapide que possible. Cela me semble un peu lent, car j'ai vu d'autres personnes obtenir des pages rendues en 30 ms ou plus rapidement. Des idées pour lesquelles le rendu serait si lent avec un tout nouveau projet MVC4 vide? Mon processeur est un Intel Core i5-2400 et la machine a 16 Go de RAM.
Soit dit en passant, ce n'est pas la première fois que la page est chargée; J'ai rechargé la page plusieurs fois avant d'obtenir ce résultat de 130 ms.
MISE À JOUR:
J'ai suivi les conseils dans la réponse de PSCoder (supprimez tout sauf RazorViewEngine), et cela a réduit de moitié le temps de rendu:
C'est vraiment bien, mais j'obtiens toujours environ 70 ms ou plus pour l'action principale Render
de la page; idéalement, je voudrais diviser par deux ou mieux.
Plus précisément, je voudrais demander:
Cela pourrait aider à améliorer le problème de performances lié à ASP.NET MVC, une amélioration des performances que vous pouvez faire consiste à effacer tous les moteurs de vue et à ajouter ceux que vous utilisez. dire par exemple: - RazorViewEngine
. MVC enregistre 2 moteurs de vue par défaut Webforms
et Razor
moteurs de vue, donc la suppression et l'ajout de ceux qui sont utilisés seuls améliorera les performances de recherche.
Vous pouvez l'ajouter dans global.asax
Application_Start
.
ViewEngines.Engines.Clear();
ViewEngines.Engines.Add(new RazorViewEngine());
Afin d'utiliser complètement la mise en cache de la recherche de vues et donc à nouveau le gain de performances, compilez le code en mode release et assurez-vous que votre web.config
le fichier est configuré avec <compilation debug="false" />
pour afficher la mise en cache de la mise en cache.
Ajout à la réponse de @PSL - nous ne vérifions que les fichiers `.CSHTML
ViewEngines.Engines.Clear();
IViewEngine razorEngine = new RazorViewEngine() { FileExtensions = new string[] { "cshtml" } };
ViewEngines.Engines.Add(razorEngine);
Assurez-vous également que vous exécutez dans Release Mode
- qui est absolument critique, car ASP/Razor/MVC ' applique une mise en cache assez agressive ' en mode release
<compilation targetFramework="4.0" debug="false">
dans votre Web.Config
fichier.
Sam Saffron/Stack Overflow a également examiné les performances de rendu des vues:
http://samsaffron.com/archive/2011/08/16/Oh+view+where+are+thou+finding+views+in+ASPNET+MVC3+
Les vues sont compilées avant utilisation - donc la première fois, elles sont lentes.
Ils sont ensuite recompilés si le .cshtml
changements de fichiers - ce qui signifie que les répertoires dans lesquels les vues sont stockées sont surveillés. La vitesse du disque dur sera donc un facteur pour les vues MVC.
Même s'ils ne font rien, chaque moteur de rendu vérifie le disque dur pour .cshtml
ou .aspx
des dossiers. Étant donné que la suppression d'un moteur de rendu l'a rendu deux fois plus rapide, je pense que la vitesse du disque est le problème: