0

WebSphere 7 で PrimeFaces 3.4 と MyFaces 2.0.7 を使用しています。状態をクライアントに保存すると、サーバーが状態を保存するよりも約 2 倍高速な要求処理になることに気付きました。クライアントの保存状態が有効な場合、リクエストは 150 ~ 350m かかります。サーバーの状態を保存すると、300 から 600 ミリ秒になります。POST の ViewState には約 200kb あります。

したがって、速度から支払われるコストはデータ転送です。幸いなことに、これはイントラネット アプリケーションのみです。

しかし、どのように実装できるのでしょうか? HTTP リクエストで状態を送信する方が、セッションから状態を復元するよりも高速です。数千の同時ユーザーセッションがディスクにシリアル化されるため、セッションから何かを復元するとディスクにバインドされた操作になり、クライアントからのみクライアントにバインドされることを理解しています。

しかし、テスト中のユーザーは私だけです。このような速度の違いは予想される動作ですか、それともサーバーの構成が間違っていますか?

4

1 に答える 1

0

MyFacesはデフォルトViewStateでセッションでシリアル化されます。したがって、セッション自体がシリアル化されていない場合でも、シリアル化のオーバーヘッドも追加され、さらにセッション内の値の保存にも時間がかかります。

解決策は、 param in を介してデフォルトの動作を変更することでした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 に答える