Visual Studio2005で「Webサイト」としてコンパイルされ、Web展開プロジェクトを使用してプリコンパイル/パッケージ化されたASP.NET 2.0アプリケーション(MSIからIIS 6.0にインストールされたもの)があります。開発者は、次のバージョンのWebアプリケーションへの変更を検討する必要がありますが、このバージョンでは変更されません)。
アプリケーションがリサイクルされるときはいつでも(たとえば、web.configに変更が加えられると)、最初のヒットで、ASP.NETはアプリケーションをJITします。この一環として、ログインページに必要なすべてのアセンブリを取得し、それらをTemporary ASP.NET Files'assembly \ dl3'ディレクトリのネイティブコードにコンパイルします。これには20〜60秒かかります。これは、まれにしか発生しないリサイクルでのみ発生しますが、発生すると、ページの読み込みにかかる時間が大幅に長くなり、これを最適化できる可能性があると思います。
考慮する必要のあるDLLは122あるようです。そのうちのいくつかはプリコンパイルされたコードビハインドであり、その他はWebサイトのサードパーティコンポーネントです(たとえば、NHibernate.dll、レポートコンポーネントなど)。
なぜすべてを再コンパイル/再JITするのですか?ほとんどのアセンブリが変更されていないことを検出せず、変更を試みないのはなぜですか?問題の原因がバッチコンパイルではないことを証明できますか?(<compilation debug="false"
> web.configで設定しました。)
他の質問は、NGENが役立つかもしれないことを示唆していますが、ASP.NET1.xでは使用できないと読みました。2.0を使用していますが、どちらの方法でも明確な答えを見つけることができません。