调试慢速剃刀视图

时间:2013-05-29 14:09:54

标签: performance asp.net-mvc-4 razor

我有ASP MVC 4 Web应用程序。 其中一个动作非常缓慢地返回。我使用MiniProfiler来分析应用程序。

我们处理动作本身的持续时间,现在是14ms,问题是请求本身的步骤仍然大约1.5s,没有控制器上的动作时间(请参阅附图)

MiniProfiler screen shoot

正如您所看到的,第一行持续时间(1262.3)是持续时间没有的孩子。 据我所知,这是剃刀引擎撕裂的时间。 重要的是要注意缓慢持续,这不仅仅是第一个请求。它永远不会低于800毫秒,有时高达2秒。

如何分析渲染本身? 视图非常复杂,其中有几个部分视图。

3 个答案:

答案 0 :(得分:3)

看起来在您的视图中正在执行SQL查询。如果您正在使用某些ORM框架(例如EntityFramework,这是懒惰地加载实体),并且一旦您触摸在其属性(在您的视图中发生),就会急切地从数据库中获取这些内容。我建议您使用视图模型并急切地在控制器操作中加载所有内容,而不是等待在视图中发生这种情况。

答案 1 :(得分:1)

看看Glimpse是否为您提供了更多见解

http://getglimpse.com/

如果计算路线,渲染视图可能需要很长时间。如果删除所有ActionLink和类似的Html Helpers,请检查渲染需要多长时间。

答案 2 :(得分:0)

create a small class that inherit from RazorViewEngine and add profiling using MiniProfiler

这有助于我查看哪个视图或部分视图的渲染时间最长。 它没有解释为什么,例如由于使用ActionLink或长计算。