RichFaces ScrollableDataTable 컨트롤의 성능을 어떻게 향상시킬 수 있습니까?

StackOverflow https://stackoverflow.com/questions/86171

  •  01-07-2019
  •  | 
  •  

문제

먼저, 약간의 배경 지식:

ScrollableDataTable을 사용하여 288개 행과 8개 열(2304개 레코드)이 있는 데이터 세트를 표시하고 있는데 성능이 많이 부족합니다.DataTable 컨트롤을 사용하여 동일한 데이터를 렌더링할 때 7초가 걸리는 것과 비교하여 컨트롤을 다시 렌더링하는 AJAX 요청은 완료하는 데 거의 20초가 걸립니다.

서블릿 필터와 JavaScript를 통해 캡처된 측정 항목은 사실상 모든 처리 시간이 클라이언트 측에서 소비된다는 것을 보여줍니다.19.87초의 요청 중 3.87초가 서버에서 소요됩니다.데이터를 쿼리하고 정렬하는 데 0.6초도 채 걸리지 않습니다.

DataTable 컨트롤로 전환하면 요청, 응답 및 렌더링 주기가 ScrollableDataTable에서 보는 것의 1/3로 줄어들지만 몇 가지 중요한 기능도 제거됩니다.

이제 질문은 다음과 같습니다.

ScrollableDataTable에서 성능 문제를 경험한 사람이 있습니까?고정된 열과 2축 스크롤을 사용하여 JSF/RichFaces에서 대량의 표 형식 데이터를 렌더링하는 가장 효율적인 방법은 무엇입니까?

업데이트:

우리는 결국 사용자 정의 컨트롤을 작성했습니다.렌더링된 구성 요소와 생성된 JavaScript에 대한 완전한 제어를 통해 DataTable에 필적하는 응답 시간을 달성할 수 있었습니다.나는 Zack의 의견에 동의합니다. 페이지 매김이 정답입니다.

도움이 되었습니까?

해결책

병목 현상은 JSF 라이프사이클의 "렌더링 응답" 단계에서 발생할 가능성이 가장 높습니다.한 번에 뷰에 대해 너무 많은 구성 요소를 렌더링하려고 합니다.

내 제안은 페이지 매김을 사용하는 것입니다.한 번에 뷰의 작은 부분을 렌더링하므로 성능이 크게 향상됩니다.

당신의 rich:dataTable 가지고있다 rows 속성 집합 및 열 필터링을 수행하는 경우 날짜 테이블에도 속성이 있는지 확인하세요. reRender="paginator" 페이지네이터는 어디에 있나요? rich:datascroller.

다른 팁

나는 오래 전에 비슷한 문제를 겪었고 결국 라이브 스크립트를 사용하여 페이지와 상호 작용하는 데이터를 표시하는 애플릿을 작성하게 되었습니다.내 성능 문제는 당신이 본 것과 동일했습니다.클라이언트가 테이블 데이터를 렌더링하는 데 30초 이상이 걸렸고, 서버는 2초도 안 되어 내 응답을 전환했습니다.

이는 테이블을 렌더링하기 위해 생성된 자바스크립트의 버그처럼 들립니다.다른 브라우저에서 페이지를 시도해 보셨나요?어떤 JSF 구현을 사용하고 있습니까(RI, MyFaces 또는 기타)?

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top