Come ridurre javax.faces.ViewState in JSF
-
02-07-2019 - |
Domanda
Qual è il modo migliore per ridurre le dimensioni del campo nascosto viewstate in JSF? Ho notato che il mio stato di visualizzazione è di circa 40k, questo scende al client e torna al server su ogni richiesta e risposta che arrivano in particolare al server, questo è un significativo rallentamento per l'utente.
My Environment JSF 1.2, MyFaces, Tomcat, Tomahawk, RichFaces
Soluzione
Hai provato a impostare il salvataggio dello stato sul server? Questo dovrebbe solo inviare un ID al client e mantenere lo stato completo sul server. Aggiungi semplicemente quanto segue al file web.xml :
<context-param>
<param-name>javax.faces.STATE_SAVING_METHOD</param-name>
<param-value>server</param-value>
</context-param>
Altri suggerimenti
Se stai usando MyFaces puoi provare questa impostazione per comprimere il viewstate prima di inviarlo al client.
<context-param>
<param-name>org.apache.myfaces.COMPRESS_STATE_IN_CLIENT</param-name>
<param-value>true</param-value>
</context-param> `
Un'opzione è quella di salvare completamente lo stato di visualizzazione sul lato client, ma è possibile che si verifichino alcuni problemi, ad esempio non riuscire a serializzare l'oggetto. Potresti provare a utilizzare algoritmi / utilità di compressione diversi in base alle tue esigenze, ma poiché il browser utilizzerà già GZip per impostazione predefinita, non sono sicuro di quanto puoi guadagnare.