在我的应用程序中,在ASP.NET MVC应用程序中启用ASP.NET跟踪后,时间计算统计信息被关闭了5000倍.
我有一个页面需要7到9秒才能加载.Firebug和IIS日志文件中的"time-taken"字段都证实了这一点.(这只是返回客户端的页面,而不是任何布局,DOM或脚本执行.)
但是,当我打开应用程序范围的跟踪(通过web.config)并查看跟踪输出时,从"Begin PreInit"到"End Render"的时间小于0.001秒.
我假设这是因为Trace.axd是在构建WebForms时考虑的,MVC绕过了传统的页面生命周期.
然而,即使我在OnActionExecuting/OnActionExecuted的开始和结束时添加自定义跟踪,时间仍然小于0.1秒.
有没有人知道在ASP.NET MVC中我需要挂钩才能让trace.axd输出报告准确的执行时间?
可能是action方法本身的时间不是执行的重要部分.尝试检查OnResultExecuting/OnResultExecuted之间的时间.这基本上是用HTML实际呈现页面的时间,而OnActionExecuting/OnActionExecuted(基本上)是为视图设置数据的时间.
请注意,如果您使用的是LINQ,则数据查询本身可能会延迟到呈现页面(枚举的模型).也就是说,缓慢可能不是由于页面复杂性而是由于数据访问,即使在执行结果时花费了时间.