2013-04-11 8 views
3

주 콘텐츠 영역이 ui:includes에 의해 제어되는 페이지가 있습니다. 기본적으로 조건과 ui:include이 포함 된 h:panelGroup이 있습니다. 이처럼다중 배율로 느려짐 : 포함

:

<h:panelGroup rendered="#{bean.page.id eq bean.page1ID}"> 
     <ui:include src="page.xhtml"/> 
</h:panelGroup> 

우리는 그 중 약 10 있습니다. 각 페이지는 꽤 복잡하고 몇 개의 콩이 있습니다. 역동적 인 ui:include 대신 렌더링 된 트릭을 수행하는 이유는 ui:include 바깥에서 사용되는 @ViewScoped bean이 ui:include 내부에서 다시 인스턴스화되어 모든 종류의 문제를 일으키는 버그가 있기 때문입니다.

우리가 어떤 행동을 취할 때마다 행동이 수행되기까지 수초 (보통 7-15 시간)가 걸릴 것입니다. 예를 들어 bean.page 속성을 변경하고 렌더링을 요청할 때 아무 것도 포함하지 않는 값을 저장하는 것과 같은 간단한 작업을 수행하는 경우에도 실제로는 느립니다. h:panelGroupsui:includes을 제외한 모든 사이트를 제거하면 사이트가 실제로 빠릅니다 (1-2 초 응답). 지금까지 나는 ui:includes에있는 모든 페이지와 그들이 사용하는 빈을 인스턴스화하는 것을 알 수 있습니다.

속도를 높이려면 어떻게해야합니까? 우리는 resin 4.0.32와 primefaces 3.5에 mojarra 2.1.13을 사용하고 있습니다.

감사합니다.

+0

''대신 [맞춤 facelet 태그] (http://www.mkyong.com/jsf2/custom-tags-in-jsf-2-0/)를 사용하는 것이 좋습니다. JSF 로직이 포함 된 전체 페이지를 포함 시키면 페이지가 빌드 될 때 포함되며 렌더링 될 때 포함되지 않기 때문에 문제가 발생할 수 있습니다. [@ ViewScoped 빈으로 경험 한 문제를 보라] (http://stackoverflow.com/questions/14518133/primefaces-multiple-dynamic-content-panels-to-be-displayed). –

+0

나는 동적 인'ui : include' 대신'h : panelGroup'과'rendered'를 사용하는 이유와 동일한 문제가있었습니다. 커스텀 Facelet 태그를 살펴 봐야 할 것입니다. – casolorz

답변

1

사용자 정의 컨텍스트 매개 변수가 있습니까? 값이 잘못되면 성능에 큰 영향을 줄 수 있습니다. -1이 값을 설정

<context-param> 
    <param-name>facelets.REFRESH_PERIOD</param-name> 
    <param-value>-1</param-value> 
</context-param> 

보기 선언 변경에 대한 내부 확인을 사용하지 않습니다 :

당신은 Facelets의이 web.xml에서 새로 해제 시도 할 수 있습니다. 즉, 재배포하지 않고 xhtml 페이지를 다시로드 할 수는 없지만 더 높은 성능을 의미합니다.

또는 프로젝트 단계를 Production (다른 매개 변수가 포함되어야 함)으로 설정할 수도 있습니다. 이 개발을위한 추가 검사 및 물건을 많이하지 않습니다 :

<context-param> 
    <param-name>javax.faces.PROJECT_STAGE</param-name> 
    <param-value>Production</param-value> 
</context-param> 

이 두 설정은 항상은 생산 환경에서 사용되어야한다.