J'ai une application ASP.NET 2.0 (installée sur IIS 6.0 à partir d'un MSI) qui a été compilée en tant que «site web», et précompilée/empaquetée à l'aide d'un projet de déploiement Web dans Visual Studio 2005. (J'ai mis en demande aux développeurs d'envisager de passer à une application web pour la prochaine version, mais cela ne changera pas pour cette version).Pourquoi ASP.NET re-compile (re-JIT) tout quand une seule chose change?
Chaque fois que l'application est recyclée (par exemple, une modification est apportée au web.config), au premier coup, ASP.NET JIT l'application. Dans ce cadre, il prend tous les assemblys requis pour la page de connexion et les compile en code natif dans le répertoire Assembly \ dl3 'des fichiers temporaires ASP.NET, ce qui prend entre 20 et 60 secondes. Cela ne se produit que sur un recyclage, ce qui arrive rarement, mais quand c'est le cas, le chargement de la page prend beaucoup plus de temps et je crois qu'il est possible d'optimiser cela.
Il semble y avoir 122 DLL dont il a besoin à considérer, dont certains sont le précompilé code-behind, d'autres sont des composants tiers pour le site Web (par exemple, NHibernate.dll, composants de rapports, etc.)
Pourquoi recompile-t-il/re-JIT tout? Pourquoi ne détecte-t-il pas que la plupart des assemblées n'ont pas changé et n'essaie pas de les changer? Puis-je prouver que ce n'est pas la compilation par lots qui cause le problème? (Je ai <compilation debug="false"
> définir dans le web.config.)
Other questions suggérer NGEN pourrait être utile, mais j'ai lu qu'il n'est pas possible de l'utiliser sur ASP.NET 1.x; nous utilisons 2,0 et je ne peux pas trouver une réponse claire de toute façon.
Nice find, +1. J'essaie de trouver un patch pour NH (nous n'utilisons pas Castle) pour voir si nous pouvons obtenir le gain ici aussi. Pourriez-vous en avoir un? – crb
Malheureusement non, mais je vais essayer de l'ajouter à Fluent NHibernate bientôt. Aucune promesse cependant. – felixg
Heh. Tous ces correctifs dans les nouveaux modèles NH que je ne peux pas utiliser dans l'ancienne version de notre produit commercial. Je préfère de loin le monde de mise à jour rapide OSS :) – crb