我们在 IIS6 上运行一个 asp.net 网站。我们刚刚从 .Net3.5 迁移到 .Net 4.0。在我们的构建过程中,我们使用 aspnet_compiler te precompile 和 aspnet_merge 来合并程序集。
在我们转换到 .Net 4.0 之后,我们进行了性能测试。这表明 4.0 版本比 3.5 版本慢得多。
我们注意到,对于每个分页服务器,w3wp.exe 进程都会从网站的 /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 文件一次,然后将其缓存。
绝望了,我怎么能告诉 IIS6 不要为每个请求读取 .compiled 文件?
我们将迁移到 IIS7,但不会很快。