Le rendu ASP.NET MVC semble lent

J’ai créé une toute nouvelle application Web MVC4 dans Visual Studio et je n’ai rien fait d’autre que d’append un contrôleur Home et une vue d’index “Hello World”. J’ai ensuite installé le package MiniProfiler NuGet et mis les quelques lignes nécessaires dans _Layout.cshtml . C’est ce que j’obtiens lorsque je lance le site en mode Release (hébergé dans IIS):

Image de rendu MVC

Le temps de rendu varie selon la charge, mais 130ms sont à peu près aussi rapides. Cela me semble un peu lent, car j’ai vu d’autres personnes obtenir des pages 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 processeur Intel Core i5-2400 et la machine dispose de 16 Go de RAM.

Au fait, 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 130ms.

METTRE À JOUR:
J’ai suivi le conseil dans la réponse de PSCoder (supprimer tout sauf le RazorViewEngine), et il a réduit de moitié le temps de rendu:

Image de rendu MVC 2

C’est vraiment bien, mais j’obtiens encore environ 70 ms ou plus pour l’action principale de Render de la page; idéalement, je voudrais réduire de moitié ou mieux.

Plus précisément, je voudrais demander:

  • Ce temps de rendu semble-t-il trop lent ou est-il moyen pour ma machine?
  • Y a-t-il un moyen d’accélérer le processus?

Cela pourrait aider à améliorer le problème de performance lié à ASP.NET MVC, une amélioration des performances que vous pouvez faire est d’effacer tous les moteurs de vue et d’append ceux que vous utilisez. dis pour ex: – RazorViewEngine . MVC enregistre 2 moteurs de visualisation par défaut sur les moteurs Webforms et Razor View. Par conséquent, supprimer et append ceux utilisés seuls améliorera les performances de recherche.

Vous pouvez append ceci dans global.asax Application_Start .

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

Pour utiliser complètement la recherche de vues, la mise en cache et donc le gain de performance comstacknt le code en mode release et assurez-vous que votre fichier web.config est configuré avec pour afficher 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 ssortingng[] { "cshtml" } }; ViewEngines.Engines.Add(razorEngine); 

Assurez-vous également que vous exécutez le Release Mode – ce qui est absolument essentiel, car ASP / Razor / MVC « applique une mise en cache assez agressive » en mode de publication.

dans votre fichier Web.Config .

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 – la première fois, elles sont lentes.

Par la suite, ils sont recompilés si le fichier .cshtml change – 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 à la .cshtml fichiers .cshtml ou .aspx . Étant donné que la suppression d’un moteur de rendu le rendait deux fois plus rapide, je soupçonne que la vitesse du disque est le problème:

  • Les vues sont stockées sur un lecteur réseau ou
  • Le disque dur est très lent