2008-09-17 9 views
5

En primer lugar, un poco de historia:¿Cómo puedo mejorar el rendimiento del control RichFaces ScrollableDataTable?

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

Las métricas capturadas a través de filtros de servlets y JavaScript muestran que prácticamente todo el tiempo de procesamiento se utiliza en el lado del cliente. De una solicitud de 19.87 segundos, se gastan 3,87 segundos en el servidor ... con menos de .6 segundos dedicados a consultar y clasificar los datos.

Al cambiar a un control DataTable, la solicitud, la respuesta y el ciclo de renderización se reducen a 1/3 de lo que estoy viendo con la tabla ScrollableData, pero también se eliminan varias características importantes.

Y ahora la pregunta:

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

Actualización:

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

Respuesta

1

El cuello de botella probablemente se encuentre en la fase "Respuesta a la renderización" del ciclo de vida JSF. Está tratando de representar demasiados componentes para la vista a la vez.

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

Asegúrese de que su rich:dataTable tiene el conjunto rows propiedad y también - si usted está haciendo filtrado de la columna - asegúrese de que la tabla de fechas también tiene la propiedad reRender="paginator" donde paginador es su rich:datascroller.

0

Tuve problemas similares hace mucho tiempo y terminé escribiendo un applet para mostrar los datos que interactuaban con la página utilizando livescript. Mis problemas de rendimiento fueron los mismos que los que estabas viendo. El cliente tardó más de 30 segundos en renderizar los datos de la tabla, y el servidor cambió mi respuesta en menos de 2 segundos.

0

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á usando (RI o MyFaces u otra cosa)?

Cuestiones relacionadas