如何从服务器端获取CQ5中每个页面组件的加载时间。如何从服务器端从服务器端获取页面中每个组件的加载时间
在这里根据我的实现,我们得到的最长时间是从request.log文件加载页面。但我需要从服务器端获取页面的每个组件加载时间。
我发现这个链接,但这样会从客户端的工作: http://www.wemblog.com/2014/05/how-to-find-component-load-time-on-page.html
如何从服务器端获取CQ5中每个页面组件的加载时间。如何从服务器端从服务器端获取页面中每个组件的加载时间
在这里根据我的实现,我们得到的最长时间是从request.log文件加载页面。但我需要从服务器端获取页面的每个组件加载时间。
我发现这个链接,但这样会从客户端的工作: http://www.wemblog.com/2014/05/how-to-find-component-load-time-on-page.html
你必须包括对每一个组件标签一流的呼叫记录和呼叫的进入和退出提供了秒表。
Logger LOG = LoggerFactory.getLogger(classname.class);
StopWatch stopWatch = new StopWatch("new");
stopWatch.start();
stopWatch.stop();
一旦你将这个包含在你的标签类中,你可以找到每个组件在特定页面中所花费的时间。 您可以使用putty来访问您的服务器日志。
您可以使用RequestProgressTracker
,如Sling documentation
这是一个从SlingHttpServletRequest#getRequestProgressTracker
得到解释。为了获得组件的计时统计信息,您可以使用Servlet Filter在每个请求上执行代码。
当过滤器被称为:
getMessages
获取RequestProgressTracker
获得迭代器在请求集合当前请求String
的形式提供,因此您需要解析它才能获取数据。让我们看看一些例子消息从文档:
的最后一条消息是我们正在寻找的那种:
TIMER_END{103,/libs/sling/servlet/default/explorer/node.esp#0}
数103
是脚本执行的毫秒数。逗号后面的值是脚本。你可以定制一个正则表达式来从每个这样的消息中提取两个值。
我最近从事的其中一个项目使用这种方法报告组件性能。我们在NewRelic中有一个整洁的仪表板,并在我们构建的每个组件上都有实时统计信息。