IIS6でasp.net Webサイトを実行しています。.Net3.5 から .Net 4.0 に移行しました。ビルド プロセスでは、aspnet_compiler te precompile と aspnet_merge を使用してアセンブリをマージします。
.Net 4.0 に変換した後、パフォーマンス テストを行いました。これは、4.0 バージョンが 3.5 バージョンよりもはるかに遅いことを示しています。
すべてのページ サーバーについて、w3wp.exe プロセスが Web サイトの /bin ディレクトリから .compiled ファイル (つまり、resultlistpage.aspx.cf9ca39a.compiled) を読み取ることに気付きました。bin ディレクトリから .compiled ファイルを読み取るだけでなく、ページ上の各コントロールに対して、対応する .compiled ファイル (resultlist.ascx.639c3968.compiled など) を読み取ります。これは、ページ要求ごとに発生します。
これを確認するために、Sysinternals Process Monitor を使用しました。
これらの aspx および ascx ファイルは、実際には MVC2 ビューです。
IIS6 で .aspx en .ascx の「ファイルが存在することを確認する」オプションをオフにしようとしましたが、これは役に立ちませんでした。また、アプリケーションの「キャッシュ ISAPI 拡張機能」チェックボックスをオンにしましたが、役に立ちませんでした。
3.5 バージョンでは、この動作は見られません。.compiled ファイルを 1 回ロードしてからキャッシュするだけです。
必死になって、リクエストごとに .compiled ファイルを読み取らないように IIS6 に指示するにはどうすればよいですか?
IIS7 に移行する予定ですが、すぐではありません。