Como posso melhorar o desempenho do controle RichFaces ScrollableDataTable?

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

  •  01-07-2019
  •  | 
  •  

Pergunta

Primeiro, um pouco de fundo:

Eu estou exibindo um conjunto de dados com 288 linhas e 8 colunas (2304 registros) usando um ScrollableDataTable e as folhas de desempenho muito a desejar. solicitação de um AJAX que renderiza novamente o controle leva cerca de 20 segundos para completar, em comparação com 7 segundos ao renderizar os mesmos dados usando um controle DataTable.

Metrics capturados através de filtros Servlet e JavaScript mostram que praticamente todo o tempo de processamento é gasto no lado do cliente o. De um segundo pedido 19.87, 3.87 segundos é gasto com o servidor ... com menos de .6 segundos consulta passou e classificar os dados.

A mudança para um controle DataTable corta o pedido, resposta e prestar ciclo de até 1/3 do que eu estou vendo com o ScrollableDataTable, mas também remove várias características importantes.

E agora a pergunta:

Tem mais alguém experimentou problemas de desempenho com o ScrollableDataTable? Qual é a maneira mais eficiente de se tornar grandes quantidades de dados tabulares em JSF / RichFaces com colunas fixadas e dois eixos de rolagem?

Update:

Nós acabou escrevendo um controle personalizado. Controle total sobre os componentes prestados e gerou JavaScript permitiu-nos alcançar um tempo de resposta comparável à DataTable. Concordo com Zack embora - paginação é a resposta correta .

Foi útil?

Solução

O gargalo é mais provável no "Render Response" fase do ciclo de vida do JSF. Ele está tentando tornar demasiados componentes para a visão de uma vez.

A minha sugestão é usar a paginação. Deve aumentar significativamente o seu desempenho porque está tornando porções menores da visão de cada vez.

Certifique-se de que o seu rich:dataTable tem o conjunto de propriedades rows e também - se você estiver fazendo qualquer coluna de filtragem -. Certificar-se de que a tabela de data também tem o reRender="paginator" propriedade onde paginador é o seu rich:datascroller

Outras dicas

Eu tive problemas semelhantes há muito tempo e acabou escrevendo um applet para exibir os dados que interagiram com a página usando LiveScript. Meus problemas de desempenho foram os mesmos que o que estava vendo. O cliente levou mais de 30 segundos para renderizar os dados da tabela, eo servidor virou a minha resposta em torno de menos de 2 segundos.

Isso soa como um bug no javascript produzidos para compor a mesa. Já experimentou a página em diferentes navegadores? Qual implementação JSF você está usando (RI ou MyFaces ou outra coisa)?

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top