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

减少JSF中viewstate隐藏字段大小的最佳方法是什么? 我注意到我的视图状态大约是40k,这会下降到客户端并在每次请求时返回到服务器,并且响应通常会发送到服务器,这对用户来说是一个显着的减速。

我的环境JSF 1.2,MyFaces,Tomcat,Tomahawk,RichFaces

您是否尝试将状态保存设置为服务器? 这应该只向客户端发送一个id,并保持服务器上的完整状态。 只需将以下内容添加到web.xml文件中:

 javax.faces.STATE_SAVING_METHOD server  

如果您使用的是MyFaces,则可以尝试此设置以在发送到客户端之前压缩视图状态。

  org.apache.myfaces.COMPRESS_STATE_IN_CLIENT true  ` 

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