Bonjour,
y a t il un moyen pour que les pages aspx s'execute apres un deploiement pour ne pas avoir cette lenteur à la premiere execution ?
Merci
Bonjour,
y a t il un moyen pour que les pages aspx s'execute apres un deploiement pour ne pas avoir cette lenteur à la premiere execution ?
Merci
Salut,
Cette lenteur se produit à chaque fois que l'application démarre. Cela se produit assez souvent en général. Si tu n'as pas trop de pages tu peux faire une routine qui appelle tes pages sur le Application_Start.
A+
"Winter is coming" (ma nouvelle page d'accueil)
En fait, cette lenteur apparait, car la première fois que tu accèdes a une page, IIS doit compiler la page pour en faire une "dll" ...
Tu peux eviter ce problème en compilant a l'avance tes pages, quand tu transfères les fichiers sur un ftp, au lieu de "bêtement" les copier coller, dans visual studio, tu vas dans le Menu "Build" et tu fais un "Publish".
Ensuite, il suffit de bien cocher les bonnes cases, au final, il va te publier ton site dans un dossier, ce dossier contiendra en fait des pages aspx (qui seront vides) de moins de 1K chacune, elle ne serve qu'a accepter les appels entrant, et toutes les dll déjà précompilées (qui seront executés par les handlers).
C'est l'étape "classique" quand tu dois mettre un site en production.
J'espere que ça t'aide et que ça solutionne ton problème !
Le démarrage de l'application nécessite un temps incompréssible (IIS, contexte de l'application...). La routine est la seule solution pour réduire ces temps. Le principe est de laisser ton application en eveil en appelant à un intervalle régulier une page de l'application.
C'est sérieux ce problème ? Je n'étais pas au courant... Le cas n'a jamais été relevé en environement de production... C'est donc un cas bien réel? vous avez déjà eu ça en production? (quand vous compilez correctemetn l'application?)
Si ton site est une application web les dll son déjà compilées (puisque ce sont des dll). Si c'est un site web et que tu pousses les fichiers .aspx et .cs (ou .vb) il faut effectivement lui laisser le temps de compiler. Rien à faire que de laisser IIS faire son boulot.
"Winter is coming" (ma nouvelle page d'accueil)
Chemanel j'ai essayé une precompilation et effectivement je n'ai p lus cette latence.
Merci à vous pour vos explications.
J'ai un script nant qui precompile et compile mon application web.
La premiere execution reste lente meme si c'est bcp moins lent que si je ne precompile pas.
Y a t il une astuce, un robot, un soft ou autres afin que la premiere execution se fasse automatiquement ?
Il me vient une idee : Faire une appli utilisant un HttpWebRequest pour faire appel a chaque page de mon site ? cela ferait executer mes pages ?
Ok donc je faire une console window base sur HttpWebRequest et mon sitemap.
Merci
Salut,J'ai quand même un doute là dessus. J'ai plutôt l'impression que l'application compile (met en mémoire) le code qu'elle utilise. La fois suivante ça ira plus vite. Mais si par la suite elle doit exécuter une portion de code par laquelle elle n'est jamais passée cela prendra encore du temps. C'est assez net sur la trace d'une application sur laquelle je travaille. Serait-ce une question de mise en mémoire?
J'aurai tendance à trouver cela normal. Inutile de prendre le temps de traiter tout le code qui se trouve dans une dll de 4Mo, dont on ne sait pas si il servira à quelque chose pendant la session.
A+
"Winter is coming" (ma nouvelle page d'accueil)
C'est effectivement au démarrage de l'application que l'on constate une latence: en effet le pool auquel est rattaché l'application dans IIS est démarré (en quelque sorte le processus).
Attention par défaut (en tous cas sur IIS6) si aucune activité sur l'application, le process s'endort au bout de 20 minutes. A la prochaine connexion il va se réveiller et rebelote Application_Start du Global.asax etc...
Pour cela il suffit de configurer correctement le pool de l'application dans IIS: par exemple recycler le processus une fois par jour à XX:XX Heure : ainsi la latence ne se produira qu'à la première demande (premier accès) et l'application restera en éveil jusqu'au lendemain.
En espérant avoir pu t'aider.
Le recyclage de pool n'est pas fait pour maintenir une application web en éveil, mais plutôt pour garantir une certaine stabilité. Cela remet les pendules (mémoire surtout) à l'heure. C'est comme rebooter son PC quand il devient trop lent pour répondre.
J'ai lu quelque part que windows server 2008 a des fonctionnalités d'éveil d'application web.
A+
"Winter is coming" (ma nouvelle page d'accueil)
En effet c'est bien pour recycler et remettre les compteurs à 0.
J'ai toujours appris comme lutecefalco, à savoir, l'appel d'une seule page suffit et mes tests à l'instant viennent de le prouver. la seule chose qui coute vraiment c'est l'initialisation du process win32 de hosting, puis l'itilitialisation AppDomain pour hoster l'application ASP.Net, pas telle ou telle page.
J'ai fait une application console qui a pour but d'executer mes pages les une apres les autres apres deploiement.
Tous marche tres bien.
Partager