web-dev-qa-db-fra.com

ASP.NET MVC - Charge initiale lente

J'ai récemment créé une application Web asp.net mvc et l'ai publiée en ligne.

Lors du premier chargement du site Web, vous devriez constater qu’il faut environ 10 à 15 secondes pour qu’il apparaisse réellement. Cependant, après avoir cliqué une fois dessus, le chargement s’effectue aussi rapidement que prévu. Je me demande simplement si quelqu'un peut avoir une idée de la raison pour laquelle le site Web prend si longtemps?

35
Jamie Mclaughlan

En général, le chargement d’une application prend toujours un peu plus de temps au démarrage du domaine d’application.

Cela pourrait contribuer à aggraver cette situation, qu'il s'agisse d'un code mal écrit (IE: Application_Start) ou de certaines bibliothèques que vous pourriez utiliser (ORM par exemple). Combien de modules avez-vous chargés?

Pour commencer, vérifiez votre web.config pour le fameux <compilation debug="true">. Cela peut avoir d'importantes répercussions sur les performances d'une installation de production. Réglez-le sur "faux"!

Recommandez de rechercher quelque chose dans le style " améliorant le temps de démarrage de l'application " et de rechercher des éléments pouvant être liés à votre application particulière.

Mise à jour de votre premier commentaire: _

Si vous voyez l'application redémarrer de nouveau (se bloque pendant quelques secondes) après 30 minutes, cela est probablement lié aux paramètres de recyclage de votre pool d'applications dans IIS.

Allez dans IIS Manager (cela suppose v7 +):

  1. Pools d'applications
  2. Cliquez avec le bouton droit sur le pool utilisé pour vos applications.
  3. Sélectionnez "Recyclage", une fenêtre intitulée "Recyclage " Apparaîtra.
  4. Inspectez ces paramètres car ils détermineront quand automatiquement tuer votre pool d'applications et le faire redémarrer.

En termes de performances générales, vous pouvez essayer:

  1. Ajout de quelques instructions de débogage qui réduisent le temps écoulé dans votre méthode Application_Start () ou tout autre emplacement applicable à essayerintercepter ce qui prend le plus longtemps.
  2. Créez un projet de démonstration totalement propre et déployez-le. Voir si cela Souffre du même problème. S'il n'essaie pas d'introduire plus de Et plus de votre vrai code jusqu'à ce que vous détectiez un ralentissement.

Si vous êtesvraiment _ Stumped # 2 peut être votre meilleur pari, même si ce sera probablement l'option la plus lente.

23
Timeout

J'ai également eu le même problème, avec le premier chargement lent des sites asp.net mvc, enfin j'ai trouvé le meilleur moyen de charger un site, extrêmement rapide au premier chargement.

Ma solution est pour Windows Server 2008 R2 et IIS 7.5, mais dans les versions supérieures de Windows, les serveurs et les versions supérieures de l'IIS fonctionnent également, avec quelques différences simples.

Tout d’abord, vous devez définir startMode de votre pool d’applications pour qu’il soit toujours en cours d’exécution, afin d’empêcher votre pool d’applications de passer en mode veille après un certain temps. (dans mon cas, cette étape modifie d'abord le chargement de mes sites de 45 à 55 secondes à environ 8 à 12 secondes).

lors de la première étape, il n’ya pas de première demande pour votre site Web. Pour le préchargement de votre site Web, nous avons besoin d’une étape supplémentaire, c’est-à-dire en installant le module d’initialisation d’application pour iis7.5 à partir de ici

à l'étape deux, vous devez définir preloadEnabled = true pour votre site Web. Cette option correspond à l'initialisation de l'application ajoutée aux paramètres du site.

Pour plus d'informations et pour savoir comment définir ces options, veuillez vous reporter à l'article suivant: http://blogs.iis.net/wadeh/application-initialization-part-2

après la deuxième étape, mon site Web se charge en seulement 1 à 3 secondes.

21
mesut

En plus de ce que Jay a dit, vous devez considérer l'utilisation de la mémoire de votre pool d'applications. Cela est particulièrement vrai pour les environnements d'hébergement partagé, où votre fournisseur recyclera généralement un pool d'applications une fois que la limite de mémoire est atteinte (plutôt que sur la base de temps). Cela provoquera à nouveau le "redémarrage" de votre site, ce qui causera un problème de chargement initial.

0
Simon Whitehead