2016-12-27 62 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中有一個整潔的儀表板,並在我們構建的每個組件上都有實時統計信息。

相關問題