2016-12-27 39 views

回答

0

你必须包括对每一个组件标签一流的呼叫记录和呼叫的进入和退出提供了秒表。

Logger LOG = LoggerFactory.getLogger(classname.class); 
StopWatch stopWatch = new StopWatch("new"); 
stopWatch.start(); 
stopWatch.stop(); 

一旦你将这个包含在你的标签类中,你可以找到每个组件在特定页面中所花费的时间。 您可以使用putty来访问您的服务器日志。

0

从版本AEM 6.0开始,OOTB功能可以测量页面上每个组件的渲染时间。

它可以通过TouchUI,Developer模式访问。

enter image description here

但是,如果安装与运行模式 'nosamplecontent' AEM将无法正常工作。

0

您可以使用RequestProgressTracker,如Sling documentation

这是一个从SlingHttpServletRequest#getRequestProgressTracker得到解释。为了获得组件的计时统计信息,您可以使用Servlet Filter在每个请求上执行代码。

当过滤器被称为:

  1. 从请求对象
  2. 呼叫getMessages获取RequestProgressTracker获得迭代器在请求集合当前请求
  3. 进度信息分析消息找到资源类型和时间信息。不幸的是,每封邮件只能以String的形式提供,因此您需要解析它才能获取数据。

让我们看看一些例子消息从文档:

example RequestProgressTracket output

的最后一条消息是我们正在寻找的那种:

TIMER_END{103,/libs/sling/servlet/default/explorer/node.esp#0} 

103是脚本执行的毫秒数。逗号后面的值是脚本。你可以定制一个正则表达式来从每个这样的消息中提取两个值。

我最近从事的其中一个项目使用这种方法报告组件性能。我们在NewRelic中有一个整洁的仪表板,并在我们构建的每个组件上都有实时统计信息。

相关问题