219 votes

Comment améliorer les performances des applications ASP.NET MVC

Comment améliorer les performances de votre application ASP.NET MVC ?

319voto

George Stocker Points 31258

Une liste compilée des sources possibles d'amélioration sont ci-dessous:

Général

  • Utiliser un profiler pour découvrir les fuites de mémoire et des problèmes de performance dans votre application. personnellement, je suggère dotTrace
  • Lancer votre site en mode Release, pas en mode Debug, une fois en production, et également au cours de profilage des performances. Mode de diffusion est beaucoup plus rapide. Le mode de débogage peuvent cacher des problèmes de performance dans votre propre code.

La mise en cache

  • Utiliser CompiledQuery.Compile() de manière récursive en évitant la recompilation de votre requête les expressions
  • Cache pas sujettes à changement contenu à l'aide d' OutputCacheAttribute pour économiser de l'inutile et de l'action les exécutions
  • L'utilisation de cookies pour souvent accédé à des renseignements non sensibles
  • Utiliser les ETags et la date d'expiration - Écrivez votre propre ActionResult méthodes si nécessaire
  • Envisager l'utilisation de l' RouteName pour organiser vos itinéraires et ensuite l'utiliser pour générer des vos liens, et essayez de ne pas utiliser l'expression à base de bois ActionLink méthode.
  • Envisager la mise en œuvre d'un itinéraire de résolution stratégie de mise en cache
  • Mettre le code répétitif à l'intérieur de votre PartialViews, évitez de le rendre xxxx fois: si vous retrouvez l'appel de la même partielle de 300 fois dans la même vue, il y a probablement quelque chose de mal à cela. Explication Et De Repères

Routage

Sécurité

  • Utiliser l'Authentification par Formulaires, Gardez vos fréquemment consulté les données sensibles dans la ticket d'authentification

DAL

L'équilibrage de la charge

  • Utiliser des proxys inverses, à étaler la charge du client dans l'ensemble de votre instance de l'application. (Débordement de pile utilise HAProxy (MSDN).

  • Utilisation Asynchrone Contrôleurs de mettre en place des actions qui dépendent de ressources externes de traitement.

Côté Client

  • Optimiser votre côté client, utilisez un outil comme YSlowpour suggestions pour améliorer les performances
  • Utiliser AJAX pour mettre à jour les composants de l'INTERFACE utilisateur, éviter toute une page de mise à jour lorsque cela est possible.
  • Envisager de mettre en œuvre un pub-sous-architecture -c'est à dire de la Comète - contenu de la livraison contre recharger en fonction de délais d'attente.
  • Déplacer la cartographie et la production de graphiques logique pour le côté client, si possible. La production de graphiques est une activité coûteuse. Reporter pour le côté client de votre serveur à partir d'un inutile fardeau, et vous permet de travailler avec des graphiques localement, sans en faire une nouvelle demande (c'est à dire Flex charting, jqbargraph, MoreJqueryCharts).
  • Utiliser CA pour les scripts et le contenu des médias pour améliorer le chargement sur le côté client (c'est à dire Google CA)
  • Minify -Compiler- votre JavaScript afin d'améliorer votre taille de script
  • Garder cookie de taille petite, depuis que des cookies sont envoyés au serveur à chaque requête.

Configuration globale

  • Si vous utilisez un Rasoir, d'ajouter le code suivant dans votre global.asax.cs, par défaut, Asp.Net MVC est rendu avec un aspx moteur et un moteur de rasoir. Ce n'utilise que les RazorViewEngine.

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

  • Ajouter gzip (HTTP compression) et statique de cache (images, css, ...) dans votre site web.config <system.webServer> <urlCompression doDynamicCompression="true" doStaticCompression="true" dynamicCompressionBeforeCache="true"/> </system.webServer>

  • Supprimer les Modules HTTP
  • Rincer votre HTML, dès qu'il est généré (dans votre site web.config) et désactiver le viewstate si vous ne l'utilisez pas <pages buffer="true" enableViewState="false">

12voto

De base suggestion est à suivre RESTE directeurs d'école et les points suivants des liens de certains de ces principes à l'Asp.Net framework MVC:

  1. Faites votre contrôleurs apatrides - il s'agit plus d'un"Web performance / de l'évolutivité de la suggestion (par opposition aux micro/machine de niveau de performance) et une grande conception de décision qui pourrait affecter votre applications à venir, en particulier dans le cas où il devient populaire, ou si vous avez besoin d'une certaine tolérance de panne par exemple.
    • Ne pas utiliser les Sessions
    • Ne pas utiliser tempdata - qui utilise les sessions
    • N'essayez pas de "cache" de tout "prématurément'.
  2. Utiliser L'Authentification Par Formulaires
    • Gardez vos fréquemment consulté les données sensibles dans le ticket d'authentification
  3. L'utilisation de cookies pour souvent accédé à des renseignements non sensibles
  4. Faites vos ressources cachable" sur le web
  5. Compiler votre code Javascript. Il y a une bibliothèque à faire aussi bien. (assurez-vous qu'il existe d'autres aussi)
  6. L'utilisation de Cdn - en particulier pour de grands fichiers multimédias et ainsi de suite.
  7. Examiner les différents types de stockage pour vos données, par exemple. fichiers, clé/valeur, magasins etc. - non seulement de SQL Server

10voto

LukLed Points 18010

Code Grimpeur et cette entrée de blog fournir des moyens d'accroître les performances de l'application de.

Compilé requête d'augmenter les performances de votre application, mais il n'a rien en commun avec ASP.NET MVC. Il permettra d'accélérer tous les db de l'application, de sorte qu'il n'est pas vraiment à propos de la MVC.

8voto

Craig Stuntz Points 95965

Cela peut sembler évident, mais gérer votre site en mode Release, pas le mode Debug, en cas de production et également lors du profilage de performances. Mode de déclenchement est beaucoup plus rapide. Debug mode peut masquer des problèmes de performances dans votre propre code.

6voto

kd7 Points 16740

Pas une terre fracassant d'optimisation mais je pensais que je jette ce là - Utiliser CA pour jquery, etc.

Citation de ScottGu lui-même: Microsoft Ajax CA vous permet d'améliorer considérablement les performances de ASP.NET les Formulaires Web et les ASP.NET MVC applications qui utilisent ASP.NET AJAX ou jQuery. Le service est gratuit, ne nécessite aucune inscription, et peut être utilisé à la fois commerciales et non commerciales.

Nous avons même utiliser le CDN pour notre webparts dans de la Mousse que l'utilisation de jquery.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X