如何在JSF中减少javax.faces.ViewState

时间:2020-03-06 14:36:15  来源:igfitidea点击:

在JSF中减小viewstate隐藏字段大小的最佳方法是什么?
我已经注意到,我的视图状态大约为40k,这会下降到客户端,并在每次请求和响应(特别是到达服务器)时都返回到服务器,这对于用户来说是一个严重的问题。

我的环境JSF 1.2,MyFaces,Tomcat,战斧,RichFaces

解决方案

如果我们使用的是MyFaces,则可以尝试使用此设置来压缩视图状态,然后再发送给客户端。

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

一种选择是在客户端完全保存视图状态,但是我们可能会遇到诸如无法序列化对象的问题。我们可能希望根据自己的需求尝试使用其他压缩算法/实用工具,但是由于默认情况下浏览器将已经使用GZip,因此我不确定我们可以获得多少。

我们是否尝试过将状态保存设置为服务器?这应该仅将ID发送给客户端,并在服务器上保持完整状态。只需将以下内容添加到文件web.xml中:

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