2012-06-13 4 views
4

저는 PrimeFaces 2.2에서 Mojara 2.0.3을 사용합니다.JSF 성능 튜닝

나는 이미이 주제에서 많은 게시물을 읽었으며 getters 등에서 db 호출을 사용하지 않는 것과 같은 유용한 제안을 발견했지만이를 사용하기 위해 ~ 3 초가 필요하다. 응답.

테스트를 거쳤으며 여섯 번째 라이프 사이클 (렌더링 단계)이 가장 큰 리소스 소비자입니다. 우리는 주로 빌트인 또는 컴포지트 구성 요소를 사용하고 있으며 간단한 html 태그를 사용하여 일부 기능 (대개 기능을 사용하지 않고 디자인에 사용됨)을 대체하는 것이 좋거나 나쁘다는 것이 궁금합니다. 예를 들어

: 사용 <p:outputPanel styleClass="myClass">...some code...</p:outputPanel>

의 Insted이

<div class="myClass">...some code...</div> 

우리는 수백 가지의 구성 요소 및 DOM 요소의 수천 거대한 전망이, 그리고 난 렌더링에서 차단 될 수 있습니다 단계.

편집

:

나는 거의 모든 "쓸모없는"구성 요소를 제거한 후, 우리는 엄청난 성능의 성장을 경험했다. 응답 시간과 응답 크기 모두. 평균 응답 시간은 ~ 3 초에서 ~ 2.2 초로 단축되었습니다. 놀라운 ... 결론은 다음과 같습니다. less less, more :

+2

렌더링 단계에서 정확히 무엇이 가장 오래 걸리는지 확인하기 위해 프로파일 링을 한 적이 있습니까? – wrschneider

+0

실제는 아닙니다. 무엇을 프로파일해야합니까? – Tushee

+0

은 CPU 샘플링과 함께 jvisualvm과 같은 것을 사용하여 특정 메소드가 가장 오래 걸리는 것을 확인합니다. javax.faces.view.facelets.DelegatingMetaTagHandler.apply() javax.faces.component.UIComponentBase.publishAfterViewEvents() javax.faces.component.UIComponentBase : 그래서 여기에 목록의 상단입니다) – wrschneider

답변

1

Core Java Server Faces의 1 장에 따르면 순수 HTML (정적)은 JSF 태그의 인코딩 단계 이전에 통과합니다.

Backing Bean과 통신 할 필요가없는 JSF 태그가 있다면 정적 데이터를 바닐라 HTML에 한정하여 성능을 약간 향상시킬 수 있다고 생각됩니다.

JSF 라이프 사이클의 인코딩 및 디코딩 구문은 구성 요소 마크 업과 바닐라 HTML 사이에서 변환됩니다. 이것은 테이블을 루핑하지 않고 (예를 들어) ajax를 사용하지 않거나 backing 빈을 사용하지 않는 <h:outputText>과 같은 행을 채우는 Component를 사용하는 경우에만 유용합니다. <p> html 요소.

요컨대 JSF 문서를 컨트롤러로 사용할 필요가 없다면 JSF 문서에서 일반 HTML을 사용하는 것을 두려워하지 마십시오.