3

私は現在、デスクトップアプリのように、アプリごとに 1 ページのデザインでJSFアプリケーションを開発しています。セクションはタブに配置され、アイテムの編集や挿入などのすべてのサブ操作はダイアログに表示されます。

問題になっているのは、ViewState のサイズと各リクエストの処理時間の両方です。現時点では、POST の ViewState の初期サイズは 200kb です (圧縮が有効になっています)。リクエストは 200 ~ 400 ミリ秒続きます (自分のマシンで、私以外のユーザーはいません)。

状態保存をセッションに設定すると、リクエストが大幅に削減されますが、処理時間が大幅に増加します。現在は 350 から 600 ミリ秒です。これはイントラネットのアプリケーションなので、ネット転送は安いので、そのプロセスをより長く送信する方が良いです。

私はその問題に対処する方法がわかりません。JSF コンポーネントが消費するスペースを削減することは可能ですか? それらのほとんどはクリックごとに変更されるわけではありませんが、とにかく逆シリアル化されて処理されるようです。それとも、JSF Bean からすべてのデータ (ドロップダウン リストの辞書など) を破棄し、サービス層で集中的なキャッシュを使用する必要がありますか? または、使用できる他のオプション/トリック/改善がありますか?

4

2 に答える 2

0

既に理解したように、サーバーとクライアントが同期を保つことができるように、フォーム全体のビュー ステートがすべての非同期ポスト バックでシリアル化されます。ASP.NET は、まったく同じように機能します。

Primefaces チームは、部分ページ投稿を可能にする Ajax 対応コンポーネントの多くに機能を追加しました。

http://blog.primefaces.org/?p=1842

このプロパティは、コンポーネントまたはpartialSubmitの属性で指定されたフォーム要素のみをシリアル化します。もちろん、これは Primefaces コンポーネントのソリューションにすぎませんが、一部のより大きな JSF ページでリクエスト サイズが大幅に削減されました。process<p:ajax>

于 2013-01-25T13:22:04.937 に答える
0

IFrame とセッション変数を利用して、コンポーネント ツリーを減らすことができます。各 iframe は独自のビューを維持します。もちろん、バックエンド プロセスでは、アプリケーションは単一ページのアプリケーションではなくなります。ただし、ユーザーはそれを 1 つの年齢のアプリケーションとしてシームレスに見ることができます。

于 2017-09-08T06:28:13.747 に答える