Comment réduire javax.faces.ViewState dans JSF
-
02-07-2019 - |
Question
Quel est le meilleur moyen de réduire la taille du champ caché viewstate dans JSF? J'ai remarqué que mon point de vue est d'environ 40 000. Cela revient au client et revient au serveur à chaque demande et réponse, en particulier pour le serveur, ce qui représente un ralentissement important pour l'utilisateur.
Mon environnement JSF 1.2, MyFaces, Tomcat, Tomahawk, RichFaces
La solution
Avez-vous essayé de définir la sauvegarde d’état sur le serveur? Cela devrait uniquement envoyer un identifiant au client et conserver l'état complet sur le serveur. Ajoutez simplement ce qui suit au fichier web.xml :
<context-param>
<param-name>javax.faces.STATE_SAVING_METHOD</param-name>
<param-value>server</param-value>
</context-param>
Autres conseils
Si vous utilisez MyFaces, vous pouvez essayer ce paramètre pour compresser l'état de la vue avant de l'envoyer au client.
<context-param>
<param-name>org.apache.myfaces.COMPRESS_STATE_IN_CLIENT</param-name>
<param-value>true</param-value>
</context-param> `
Une option consiste à enregistrer complètement l'état d'affichage côté client, mais vous pouvez être confronté à des problèmes tels que l'impossibilité de sérialiser l'objet. Vous voudrez peut-être essayer d’utiliser un algorithme / utilitaire de compression différent en fonction de vos besoins, mais comme le navigateur utilisera déjà le GZip par défaut, je ne sais pas combien vous pouvez gagner.