2016-12-27 4 views
0

CQ5에서 페이지의 각 구성 요소를 서버 측에서로드하는 방법.cq5의 서버 측에서 페이지의 각 구성 요소 로딩 시간을 얻는 방법

내 구현에 따라 request.log 파일에서 페이지를로드하는 데 시간이 오래 걸립니다. 하지만 서버 측에서 페이지의 각 구성 요소 로딩 시간을 가져와야합니다.

나는이 링크를 찾았지만이 클라이언트 측에서 작동합니다 http://www.wemblog.com/2014/05/how-to-find-component-load-time-on-page.html

답변

0

당신은 모든 구성 요소 태그 클래스 호출에 대한 로거를 포함하고 통화의 입구와 출구를 위해 스톱워치를 제공해야합니다.

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

태그 클래스에 이것을 포함 시키면 특정 페이지에서 각 구성 요소의 소요 시간을 확인할 수 있습니다. 퍼티를 사용하여 서버 로그에 액세스 할 수 있습니다.

0

AEM 6.0 버전부터는 페이지의 각 구성 요소에 대한 렌더링 시간을 측정하는 OOTB 기능이 있습니다.

TouchUI, 개발자 모드를 통해 액세스 할 수 있습니다. AEM은 실행 모드 'nosamplecontent'와 함께 설치되어있는 경우

enter image description here

그러나, 그것은 작동하지 않습니다. 그것은 SlingHttpServletRequest#getRequestProgressTracker에서 얻을 년대 Sling documentation

에 설명 된대로

0

당신은 RequestProgressTracker를 사용할 수 있습니다. 구성 요소에 대한 타이밍 통계를 얻으려면 Servlet Filter을 사용하여 모든 요청에 ​​대해 코드를 실행할 수 있습니다.

  1. 가 메시지를 분석 현재 요청
  2. 에 대한 메시지를 진행 요청의 콜렉션의 반복자를 얻기 위해 요청 객체
  3. 전화 getMessages에서 RequestProgressTracker를 얻을 : 필터가 호출 될 때마다

    리소스 유형 및 타이밍 정보를 찾습니다. 불행히도 모든 메시지는 String으로 만 제공되므로 데이터를 파싱해야합니다.

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

    103가 수 :

    example RequestProgressTracket output

    마지막 메시지는 우리가 찾고있는 종류는 다음과 같습니다

의이 문서에서 몇 가지 예를 들어 메시지를 살펴 보자 스크립트가 실행될 때 걸린 시간 (밀리 초). 쉼표 다음의 값은 스크립트입니다. 정규식을 조정하여 이러한 모든 메시지에서 두 값을 모두 추출 할 수 있습니다.

최근에 작업 한 프로젝트 중 하나는이 접근법을 사용하여 구성 요소 성능을보고했습니다. NewRelic에는 모든 구성 요소에 대한 실시간 통계가 포함 된 깔끔한 대시 보드가 있습니다.