Sitecore的子布局呈现统计数据是否不正确?

时间:2013-05-09 10:19:33

标签: performance sitecore

内置的Sitecore渲染统计信息http://<sitename>/sitecore/admin/stats.aspx对于识别低效且缓慢加载的XSLT渲染非常有用。最近我开始切换到.ascx子布局以利用Sitecore C#API,这有助于在正确使用时提高性能。

但是,我注意到在stats页面上没有正确报告子布局(与XSLT渲染相反)。请参见下面的屏幕截图....

Example sublayout stats

我知道这个子布局需要 1.8秒来生成(我在代码隐藏中计算了这个)。缓存已关闭。我已经20次刷新页面,以确保我获得平均值。您会看到“平均项目”始终为0 - 我可以忍受 - 但“平均时间(毫秒)”小于1毫秒这显然是错误的。

有没有人对此有任何见解?有没有人找到让它正常工作的方法?

1 个答案:

答案 0 :(得分:3)

判断统计数据是对还是错将依赖于准确理解它的衡量标准。

使用Reflector在Sitecore.Diagnostics.Statistics中挖掘我注意以下内容:

  • Sitecore.Web.UI.Webcontrol包含字段m_timer
  • 这是在BeforeRender()方法中“已启动”并在AfterRender()方法中“已停止”
  • 来自该计时器的数据被发送到Statistics.AddRenderingData()并根据控件记录

这意味着它正在测量渲染控件所需的时间,对于XSLT来说,它包括准备其中所有数据的处理时间,但正常ASCX的大部分工作是在渲染阶段之前完成,统计数据不太有用。在时间中加入Load阶段会无意中包含所有子组件的处理时间,因为Load序列是链接的并且是递归调用的,所以这可能也没有多大帮助。

我怀疑没有好的方法来测量特定ASCX控件(不包括孩子)的处理时间,而不首先获取累积数据,然后对处理链进行后处理并将时间分开。这就是RedGate ANTS真正做得很好的事情,但如果它是在实时生产系统上执行的话可能不会那么好,考虑到开销。