Question

Je développe un site Web (relativement petit) en ASP.Net 2.0.J'utilise également nAnt pour effectuer quelques ajustements simples sur mon projet avant de livrer les exécutables.Dans son état actuel, le site est « précompilé » à l'aide de

aspnet_compiler.exe -nologo -v ${Appname} -u ${target}

J'ai remarqué qu'après le redémarrage du pool IIS (après un arrêt inactif ou un recyclage), l'application prend jusqu'à 20 secondes avant d'être de nouveau en ligne (et que Application_start est atteint).

Je n'ai pas le même problème lorsque je débogue directement dans Visual Studio (le démarrage prend 2 secondes), donc je me demande si aspnet_compiler est vraiment une si bonne idée.

Je n'ai pas trouvé grand chose sur MSDN.Comment compilez-vous vos sites Web pour la production ?

Était-ce utile?

La solution

Sois sûr que:

  1. Vous utilisez un projet d'application Web plutôt qu'un projet de site Web, cela se traduira par un binaire précompilé pour votre code derrière
  2. Vous avez désactivé la génération de code de débogage dans le fichier web.config. Je suppose que si cela est différent de l'utilisation de aspnet_compiler, le code peut être recompilé.

Si vous les avez essayés, vous pourriez peut-être essayer d'exécuter ngen sur votre assemblage, économisant ainsi du temps JIT ?

Autres conseils

Pour une réactivité optimale, ne laissez pas votre application s'arrêter.

La première méthode consiste à s’assurer qu’il est incroyablement populaire afin qu’il y ait toujours quelqu’un qui l’utilise.

Alternativement, récupérer une petite page persistante ailleurs en tant qu'activité planifiée peut être utilisé pour garder votre site « chaud ».

Si votre site Web est compilé de manière à pouvoir être mis à jour, vous verrez un ensemble de fichiers .ASPX dans votre répertoire virtuel.Ceux-ci doivent être compilés au démarrage.C'est ainsi que vous pouvez entrer et modifier l'interface utilisateur Web elle-même.Il s'agit de la valeur par défaut pour les sites Web et les applications Web.

Assurez-vous que cela est défini dans web.config <compilation debug=false>.Dans mon cas, j'ai également un fichier batch qui émet des requêtes Get pour toutes les pages principales avant de les donner aux utilisateurs (simulation de chargement de page).

La clé est de s’assurer que le pool d’applications IIS ne s’arrête jamais.C'est là que le code est réellement hébergé.Réglez le « Délai d'inactivité » (sous Paramètres avancés) sur quelque chose de très élevé, comme 1 440 minutes (24 heures) pour vous assurer qu'il ne s'arrête pas tant que quelqu'un accède à votre site une fois par jour.

Vous disposerez toujours du temps JIT chaque fois que vous déployerez un nouveau code ou si ce délai d'inactivité est dépassé sans aucun trafic.

Configuration du délai d'inactivité d'IIS 7.x

@Simon:

  • Le projet est une application Web.Les sites Web sont alors plus lents à démarrer (je ne savais pas que cela avait une incidence, à part l'organisation différente du code) ?
  • J'ai vérifié, et pendant que je modifie le web.config après l'appel de aspnet_compiler, je ne touche pas à la valeur de débogage (je vérifierai cependant que le site Web n'est pas plus rapide à démarrer si je ne touche pas au web.config, juste pour faire bien sûr)

(Et je vais certainement jeter un œil à ngen, je ne connaissais pas cet outil.)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top