0

我在 WebSphere 7 上使用 PrimeFaces 3.4 和 MyFaces 2.0.7。我注意到将状态保存到客户端导致请求处理比服务器保存状态快约 2 倍。当客户端保存状态被激活时,请求从 150 到 350m。保存服务器状态的时间为 300 到 600 毫秒。POST 中的 ViewState 大约有 200kb。

因此,速度所付出的代价就是数据传输。幸运的是,它只是 Intranet 应用程序。

但是让我感到奇怪的是,如何实现,在 http 请求中发送状态比从会话中恢复更快?我知道虽然有几千个并发用户会话将被序列化到磁盘,所以从会话中恢复某些内容将是磁盘绑定操作,而从客户端仅是客户端绑定。

但我是测试期间唯一的用户。这种速度差异是预期的行为,还是服务器的错误配置?

4

1 回答 1

0

MyFacesViewState默认在会话中序列化。所以即使 session 本身没有序列化,也增加了序列化的开销,另外在 session 中存储 value 也需要一些时间。

解决方案是通过参数更改默认行为web.xml

<context-param>
    <param-name>org.apache.myfaces.SERIALIZE_STATE_IN_SESSION</param-name>
    <param-value>false</param-value>
</context-param>    

现在我有 125 到 250 毫秒的时间,存储ViewState在服务器上。所以它更快。

于 2013-02-01T14:13:48.317 回答