4

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

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

MiniProfiler 屏幕截图

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

如何分析渲染本身?该视图非常复杂,其中包含多个局部视图。

4

3 回答 3

3

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

于 2013-05-29T14:13:38.703 回答
1

看看 Glimpse 是否能让您更深入地了解

http://getglimpse.com/

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

于 2013-05-29T14:22:57.897 回答
0

创建了一个从 RazorViewEngine 继承的小类,并使用 MiniProfiler 添加分析

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

于 2013-05-30T06:39:33.003 回答