2

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 に移行する予定ですが、すぐではありません。

4

1 に答える 1

0

ええと...私はいつもIISが.compiledファイルをチェックしなければならないと思っていました。なぜならそれはソースのハッシュを含んでいるからです。それ以外の場合、その間にファイルを変更したかどうかをどのように判断できますか?いずれにせよ、この動作が3.5と4.0の間で合法的に変更された場合は、次のことを確認してください。

コンパイル前の段階で「更新可能」を指定していますか?もしそうなら、それが問題である可能性があります。

あなたが試みるかもしれないもう一つのことは、完全に名前が付けられたdllを吐き出す「fixednames」を指定することです。それは少なくともどのファイルが継続的にチェックされているかを正確に知らせます。

于 2012-10-02T06:00:31.343 に答える