Как уменьшить javax.faces.ViewState в JSF

Каков наилучший способ уменьшить размер скрытого поля viewstate в JSF? Я заметил, что мое состояние представления составляет примерно 40 тыс., Это сводится к клиенту и обратно к серверу при каждом запросе и отклике, особенно приближающемся к серверу, это значительное замедление для пользователя.

Моя среда JSF 1.2, MyFaces, Tomcat, Tomahawk, RichFaces

Ответ 1

Вы пытались настроить сохранение состояния на сервер? Это должно только отправлять идентификатор клиенту и сохранять полное состояние на сервере. Просто добавьте в файл web.xml следующее:

 <context-param>
  <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
  <param-value>server</param-value>
 </context-param>

Ответ 2

Если вы используете MyFaces, вы можете попробовать этот параметр, чтобы сжать состояние просмотра перед отправкой клиенту.

<context-param>
    <param-name>org.apache.myfaces.COMPRESS_STATE_IN_CLIENT</param-name>
    <param-value>true</param-value>
</context-param> `

Ответ 3

Один из вариантов заключается в том, чтобы полностью сохранить состояние представления на стороне клиента, но вы можете столкнуться с некоторыми проблемами, такими как невозможность Serialize объекта. Вы можете попробовать использовать другой алгоритм сжатия/утилиту на основе вашего требования, но поскольку браузер уже использует GZip по умолчанию, я не уверен, сколько вы можете получить.