Как уменьшить javax.faces.ViewState в JSF
-
02-07-2019 - |
Вопрос
Каков наилучший способ уменьшить размер скрытого поля состояния просмотра в JSF?Я заметил, что мое состояние просмотра составляет примерно 40 тысяч, оно передается клиенту и обратно на сервер при каждом запросе и ответе, особенно поступающем на сервер, это существенное замедление для пользователя.
Моя среда JSF 1.2, MyFaces, Tomcat, Tomahawk, RichFaces
Решение
Вы пытались настроить сохранение состояния на сервере?Это должно только отправлять идентификатор клиенту и сохранять полное состояние на сервере.Просто добавьте следующее в файл веб.xml :
<context-param>
<param-name>javax.faces.STATE_SAVING_METHOD</param-name>
<param-value>server</param-value>
</context-param>
Другие советы
Если вы используете MyFaces, вы можете попробовать этот параметр, чтобы сжать состояние просмотра перед отправкой клиенту.
<context-param>
<param-name>org.apache.myfaces.COMPRESS_STATE_IN_CLIENT</param-name>
<param-value>true</param-value>
</context-param> `
Один из вариантов — полностью сохранить состояние просмотра на стороне клиента, но вы можете столкнуться с некоторыми проблемами, например, с невозможностью сериализовать объект.Возможно, вы захотите попробовать использовать другой алгоритм/утилиту сжатия в зависимости от ваших требований, но, поскольку браузер уже использует GZip по умолчанию, я не уверен, сколько вы сможете получить.