¿Cómo puedo mejorar el rendimiento del control RichFaces ScrollableDataTable?

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

  •  01-07-2019
  •  | 
  •  

Pregunta

Primero, un poco de historia:

Estoy mostrando un conjunto de datos con 288 filas y 8 columnas (2304 registros) usando ScrollableDataTable y el rendimiento deja mucho que desear.Una solicitud AJAX que vuelve a representar el control tarda casi 20 segundos en completarse, en comparación con 7 segundos cuando se representan los mismos datos mediante un control DataTable.

Las métricas capturadas mediante filtros de Servlet y JavaScript muestran que prácticamente todo el tiempo de procesamiento se dedica al lado del cliente.De una solicitud de 19,87 segundos, 3,87 segundos se dedican al servidor...con menos de 0,6 segundos dedicados a consultar y ordenar los datos.

Cambiar a un control DataTable reduce el ciclo de solicitud, respuesta y procesamiento a 1/3 de lo que veo con ScrollableDataTable, pero también elimina varias características importantes.

Y ahora la pregunta:

¿Alguien más ha experimentado problemas de rendimiento con ScrollableDataTable?¿Cuál es la forma más eficiente de representar grandes cantidades de datos tabulares en JSF/RichFaces con columnas fijadas y desplazamiento de dos ejes?

Actualizar:

Terminamos escribiendo un control personalizado.El control total sobre los componentes renderizados y el JavaScript generado nos permitió lograr un tiempo de respuesta comparable al de DataTable.Sin embargo, estoy de acuerdo con Zack: la paginación es la respuesta correcta.

¿Fue útil?

Solución

Lo más probable es que el cuello de botella se encuentre en la fase de "Respuesta de procesamiento" del ciclo de vida de JSF.Está intentando representar demasiados componentes para la vista al mismo tiempo.

Mi sugerencia es utilizar la paginación.Debería aumentar significativamente su rendimiento porque representa porciones más pequeñas de la vista a la vez.

Asegúrate de que tu rich:dataTable tiene el rows conjunto de propiedades y también, si está realizando algún filtrado de columnas, asegúrese de que la tabla de fechas también tenga la propiedad reRender="paginator" ¿Dónde está tu paginador? rich:datascroller.

Otros consejos

Tuve problemas similares hace mucho tiempo y terminé escribiendo un subprograma para mostrar los datos que interactuaban con la página usando LiveScript.Mis problemas de rendimiento eran los mismos que estabas viendo.El cliente tardó más de 30 segundos en representar los datos de la tabla y el servidor entregó mi respuesta en menos de 2 segundos.

Esto suena como un error en el javascript producido para representar la tabla.¿Has probado la página en diferentes navegadores?¿Qué implementación de JSF estás utilizando (RI o MyFaces o algo más)?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top