性能低 – 单击重定向链接后运行的ASP .NET ASPNET_WP.EXE和CSC.EXE

我点击一个页面上的链接,该页面重定向到另一个页面(Response.Redirect(page.aspx))。

浏览器搅拌约30秒,页面显示。 我试图找出加载页面需要这么长时间的原因。

该页面包含两个其他自定义控件。

我已经注释掉了每个控件和两个控件的代码行,页面仍然需要大约30秒才能加载。

我为每个控件和page.aspx设置了Page_Load事件的断点,并且点击带有Response.Redirect的链接到第一个断点也需要大约30秒。

我加载了任务管理器并点击了链接。 我注意到aspnet_wp.exe和csc.exe在这30秒的时间范围内运行。

我想知道在等待页面加载的时候是否存在某种代码隐藏的shinanigans。

这仅在我第一次点击链接时发生。 之后,它并没有那么慢。

我用谷歌搜索了,但没有很多有用的信息。 有人有主意吗?

谢谢,

– -担 – –

第一次加载页面时,asp.net会编译很多页面,几乎每个页面都找到相同的dir,包括模块和bin上的dll。

要加速(开发),请尝试在web.config上使用此选项(仅在您的开发计算机上)。

 

使用batch =“false”asp.net只编译一个页面,就是你所在的那个页面,所以你第一次获得dll的时间很长,但是之后,如果你有200页,那就少了很多,而你只更改一个,并且您只开发/调试一个。

如果可以,请尝试不要使用App_Code目录,并将所有代码放在dll中。 查看有关web.config上的编译选项的更多信息,以使其运行更快,例如将临时目录更改为比C:更快的不同磁盘。

第二招

我想说一下我在stackoverflow上找到的另一个技巧。

  

你只需要安装一个ms补丁http://support.microsoft.com/kb/961884我已经测试了它,结果非常好。

.net 4和Visual Studio 2010

同样的想法,但你不需要运行补丁。

网络农场

我注意到在第一次运行应用程序时在Web场上,如果你在应用程序启动时有很多关于global.asax的工作, 那么我重新使用Mutex,只让一个池进行页面编译! 否则,有可能发生冲突和启动应用程序的巨大延迟 – 特别是如果您在程序的其他部分使用互斥锁。

csc.exe正在运行并且只在您第一次单击链接时才会发生这一事实,这表明aspx中有很多元素需要在显示页面之前进行编译。 查找表达式孔<%= %> 。 它也可能是控件本身的东西(特别是如果它们是ascx用户控件而不是服务器控件)。

它仅在您第一次单击链接时发生的原因是因为之后编译的页面对象被缓存,因此在重新启动应用程序之前无需重新编译。