Comment améliorer les performances du contrôle RichFaces ScrollableDataTable?

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

  •  01-07-2019
  •  | 
  •  

Question

Tout d'abord, un peu de contexte:

J'affiche un ensemble de données de 288 lignes et 8 colonnes (2304 enregistrements) à l'aide d'un ScrollableDataTable et la performance laisse beaucoup à désirer. Une demande AJAX qui réinterprète le contrôle prend environ 20 secondes, contre 7 secondes pour le rendu des mêmes données à l'aide d'un contrôle DataTable.

Les métriques capturées via les filtres Servlet et JavaScript montrent que pratiquement tout le temps de traitement est consacré au côté client. Sur une requête de 19,87 secondes, il reste 3,87 secondes sur le serveur ... avec moins de 0,6 seconde d'interrogation et de tri des données.

Le passage à un contrôle DataTable réduit la requête, la réponse et le cycle de rendu à 1/3 de ce que je vois avec ScrollableDataTable, mais supprime également plusieurs fonctionnalités importantes.

Et maintenant la question:

Quelqu'un d'autre at-il rencontré des problèmes de performances avec ScrollableDataTable? Quel est le moyen le plus efficace de générer de grandes quantités de données tabulaires dans JSF / RichFaces avec des colonnes épinglées et un défilement à deux axes?

Mise à jour:

Nous avons fini par écrire un contrôle personnalisé. Un contrôle total sur les composants rendus et le JavaScript généré nous a permis d’obtenir un temps de réponse comparable à DataTable. Je suis cependant d’accord avec Zack - la pagination est la bonne réponse.

Était-ce utile?

La solution

Le goulot d'étranglement est très probablement dans le champ "Réponse au rendu". phase du cycle de vie de JSF. Il essaie de rendre trop de composants pour la vue en même temps.

Ma suggestion est d'utiliser la pagination. Cela devrait considérablement augmenter vos performances, car il permet de rendre de plus petites portions de la vue à la fois.

Assurez-vous que votre rich: dataTable a la propriété rows et également, si vous effectuez un filtrage de colonne, que la table de date contient également la propriété reRender = "paginator" où paginateur est votre rich: datascroller .

Autres conseils

J'ai eu des problèmes similaires il y a longtemps et j'ai fini par écrire une applet pour afficher les données qui interagissaient avec la page à l'aide de livescript. Mes problèmes de performance étaient les mêmes que ce que vous voyiez. Le client a pris plus de 30 secondes pour restituer les données de la table et le serveur a retourné ma réponse en moins de 2 secondes.

Cela ressemble à un bogue dans le javascript produit pour rendre le tableau. Avez-vous essayé la page dans différents navigateurs? Quelle implémentation JSF utilisez-vous (RI ou MyFaces ou autre chose)?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top