"Webサイト"としてコンパイルされ、Visual Studio 2005でWebデプロイメントプロジェクトを使用してプリコンパイル/パッケージ化されたASP.NET 2.0アプリケーション(MSIのIIS 6.0にインストールされている)があります。開発者に、次のバージョンのWebアプリケーションへの変更を検討するよう依頼しますが、このバージョンでは変更されません)。なぜ、ASP.NETが1つだけ変更されたときにすべてを再コンパイル(再JIT)するのですか?
アプリケーションがリサイクルされると(たとえば、web.configに変更が加えられたとき)、最初にヒットすると、ASP.NETはアプリケーションをJITします。その一環として、ログインページに必要なすべてのアセンブリを取得し、テンポラリASP.NETファイル 'assembly \ dl3'ディレクトリのネイティブコードにコンパイルします(20〜60秒かかる)。これはごくまれにしか発生しないリサイクルでのみ発生しますが、そうするとページの読み込みに時間がかかりますが、最適化することは可能かもしれません。
いくつかはプリコンパイルされたコードビハインドであり、その他はWebサイトのサードパーティコンポーネントです(たとえば、NHibernate.dll、レポートコンポーネントなど)。
なぜ再コンパイル/再JIT すべて?アセンブリのほとんどが変更されていないことを検出せず、変更しようとしないのはなぜですか?問題の原因となっているバッチ編集ではないことを証明できますか? (私は<compilation debug="false"
がweb.configに設定されています)
Other questions NGENが役に立ちそうですが、ASP.NET 1.xで使用することはできません。私たちは2.0を使用していますが、いずれの方法でもきれいな答えが見つかりません。
Nice find、+1。私はNHのパッチ(城は使用していません)を見つけようとしています。あなたはそれを持っていることがありますか? – crb
残念ながら、私はすぐにFluent NHibernateに追加しようとします。しかし約束はない。 – felixg
Heh。新しいNHパターンのこれらの修正は、私が市販されている製品の旧バージョンでは使用できないものです。私はOSSクイックアップデートの世界をもっと好みます:) – crb