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

Dav*_*ers 17 java viewstate optimization jsf bandwidth

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

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

Cri*_*Vat 16

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

 <context-param>
  <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
  <param-value>server</param-value>
 </context-param>
Run Code Online (Sandbox Code Playgroud)

  • 请注意,使用服务器状态保存会增加服务器内存消耗_a lot_!如果你有很多用户(数千),这可能是一个非常快的瓶颈. (7认同)

Dav*_*ers 12

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

<context-param>
    <param-name>org.apache.myfaces.COMPRESS_STATE_IN_CLIENT</param-name>
    <param-value>true</param-value>
</context-param> `
Run Code Online (Sandbox Code Playgroud)