Je travaille sur Weblogic 10.3.2, JSF 1.2, Richfaces 3.3.2 et Facelets 1.1.14.Problèmes de performance JSF - RichFaces montrant une page complexe
J'ai un sérieux problème de performance, en particulier en montrant ma page d'accueil, qui contient un fichier très riche: datable. Lors du déploiement de l'application sur mon serveur local, une demande peut durer plus de 5 secondes.
La page d'accueil est un ui: composition d'un template simple (le problème n'est pas dans le template, les autres pages sont relativement rapides), mais la composition elle-même est énorme (~ 1000 lignes).
La page comporte deux parties, la partie inférieure est un datatable complexe, où je l'ai mis en œuvre rowspan en utilisant une combinaison de plusieurs riche: Soustable s et rendu attribut. La méthodologie suivie peut être vue in this Richfaces forum discussion.
La partie supérieure de la page contient une liste de filtres pour le datatable. Je n'utilise pas de filtres dans les en-têtes riches: datatable, parce que je voulais quelque chose de la façon suivante.
Si le bouton Ajouter est pressé, une requête AJAX a lieu (a4j: commandButton) pour ajouter un autre objet de filtre à la collection de support, puis filtres sont nouveau rendu à l'aide a4j: répétition (pas le datatable).
Le format rich: datatable est seulement redéfini lorsque le bouton de recherche est enfoncé.
Le code de ma page est à la fin de la publication (certains champs ont été renommés).
Observations:
Modification BalusC's Debug Phase Listener, j'ai pu voir à quel point chaque phase prend. C'est la demande en appuyant sur le bouton "Ajouter", où seuls les filtres au-dessus du datatable sont rendus.
2010-09-21 11:23:41,235 - Processing new Request!
2010-09-21 11:23:41,235 - before - RESTORE_VIEW 1
2010-09-21 11:23:41,235 - after - RESTORE_VIEW 1
2010-09-21 11:23:41,251 - before - APPLY_REQUEST_VALUES 2
2010-09-21 11:23:41,454 - getRowData-16: 84,026 ms
Home Page Query-16: 58,178 ms
2010-09-21 11:23:42,360 - after - APPLY_REQUEST_VALUES 2
2010-09-21 11:23:42,360 - before - PROCESS_VALIDATIONS 3
2010-09-21 11:23:42,438 - getRowData-16: 0,005 ms
2010-09-21 11:23:43,126 - after - PROCESS_VALIDATIONS 3
2010-09-21 11:23:43,126 - before - UPDATE_MODEL_VALUES 4
2010-09-21 11:23:43,188 - getRowData-16: 0,005 ms
2010-09-21 11:23:43,938 - after - UPDATE_MODEL_VALUES 4
2010-09-21 11:23:43,938 - before - INVOKE_APPLICATION 5
2010-09-21 11:23:43,938 - after - INVOKE_APPLICATION 5
2010-09-21 11:23:43,954 - before - RENDER_RESPONSE 6
2010-09-21 11:23:44,282 - getRowData-16: 0,007 ms
2010-09-21 11:23:45,173 - after - RENDER_RESPONSE 6
2010-09-21 11:23:45,173 - Done with Request!
Vous pouvez voir que la demande de valeurs Appliquer prend environ 0.8s, le processus Validations prend environ 0.8s, le modèle de mise à jour prend 0.8s, l'application Invoke (où la logique métier a lieu) prend du temps négligeable et enfin, la réponse de rendu prend 0,9s.
Quand je commenter les riches: datatable et ne montre que les filtres, le rendu est nettement plus rapide:
2010-09-21 11:50:52,780 - Processing new Request!
2010-09-21 11:50:52,780 - before - RESTORE_VIEW 1
2010-09-21 11:50:52,780 - after - RESTORE_VIEW 1
2010-09-21 11:50:52,780 - before - APPLY_REQUEST_VALUES 2
2010-09-21 11:50:52,858 - after - APPLY_REQUEST_VALUES 2
2010-09-21 11:50:52,858 - before - PROCESS_VALIDATIONS 3
2010-09-21 11:50:52,920 - after - PROCESS_VALIDATIONS 3
2010-09-21 11:50:52,920 - before - UPDATE_MODEL_VALUES 4
2010-09-21 11:50:52,967 - after - UPDATE_MODEL_VALUES 4
2010-09-21 11:50:52,967 - before - INVOKE_APPLICATION 5
2010-09-21 11:50:52,967 - after - INVOKE_APPLICATION 5
2010-09-21 11:50:52,983 - before - RENDER_RESPONSE 6
2010-09-21 11:50:53,186 - after - RENDER_RESPONSE 6
2010-09-21 11:50:53,186 - Done with Request!
La demande entière ne prend 400ms.
Questions:
- Est-ce problème de performance d'un problème d'arborescence des composants JSF?
- Je ne pense pas que la rupture de la page dans d'autres compositions ui aiderait. Je crois que cela aboutirait à un arbre de composants JSF identique.
Que puis-je faire pour rendre la page plus rapide?
Le code: in PasteBin
Serait bien si vous ajoutez un résumé des modifications que vous avez apportées et comment cela fait la différence à chaque changement. – BalusC