Como reduzir javax.faces.ViewState em JSF
-
02-07-2019 - |
Pergunta
O que é a melhor maneira de reduzir o tamanho do campo oculto viewstate em JSF? Tenho notado que o meu estado de exibição é aproximadamente 40K esta desce para o cliente e de volta para o servidor em cada solicitação e resposta espically vindo para o servidor esta é uma desaceleração significativa para o usuário.
O meu ambiente JSF 1.2, MyFaces, Tomcat, Tomahawk, RichFaces
Solução
Você já tentou definir a poupança de servidor de estado? Isso só deve enviar um id para o cliente, e manter o estado completo no servidor. Basta adicionar o seguinte para o arquivo web.xml :
<context-param>
<param-name>javax.faces.STATE_SAVING_METHOD</param-name>
<param-value>server</param-value>
</context-param>
Outras dicas
Se você estiver usando MyFaces você pode tentar essa configuração para comprimir o viewstate antes de enviar para o cliente.
<context-param>
<param-name>org.apache.myfaces.COMPRESS_STATE_IN_CLIENT</param-name>
<param-value>true</param-value>
</context-param> `
Uma opção é completamente salvar o estado de exibição no lado do cliente, mas você pode enfrentar algum problema, como não ser capaz de serializar o objeto. Você pode querer tentar usar diferentes algoritmo de compressão / utilitário baseado em sua exigência, mas desde que o navegador já vai usar o GZip por padrão não estou certo de quanto você pode ganhar.