5

まず、少し背景:

ScrollableDataTableを使用して288行8列(2304レコード)のデータセットを表示していますが、パフォーマンスには多くの要望があります。コントロールを再レンダリングするAJAXリクエストは、DataTableコントロールを使用して同じデータをレンダリングする場合の7秒と比較して、完了するまでに約20秒かかります。

サーブレットフィルタとJavaScriptを介してキャプチャされたメトリックは、実質的にすべての処理時間がクライアント側で費やされていることを示しています。19.87秒のリクエストのうち、3.87秒がサーバーに費やされています...データのクエリと並べ替えに費やされた時間は0.6秒未満です。

DataTableコントロールに切り替えると、要求、応答、およびレンダリングのサイクルがScrollableDataTableで表示されるものの1/3に短縮されますが、いくつかの重要な機能も削除されます。

そして今の質問:

ScrollableDataTableでパフォーマンスの問題が発生した人は他にいますか?ピン留めされた列と2軸スクロールを使用してJSF/RichFacesで大量の表形式データをレンダリングする最も効率的な方法は何ですか?

アップデート:

最終的にカスタムコントロールを作成しました。レンダリングされたコンポーネントと生成されたJavaScriptを完全に制御することで、DataTableに匹敵する応答時間を実現できました。しかし、私はザックに同意します-ページ付けが正解です。

4

3 に答える 3

1

ボトルネックは、JSF ライフサイクルの「Render Response」フェーズにある可能性が最も高いです。ビューに対して一度にレンダリングしようとしているコンポーネントが多すぎます。

私の提案は、ページネーションを使用することです。ビューの小さな部分を一度にレンダリングするため、パフォーマンスが大幅に向上するはずです。

rich:dataTableプロパティが設定されていることを確認してください。また、列のフィルタリングを行っている場合は、日付テーブルにもpaginator が yourrowsのプロパティがあることを確認してください。reRender="paginator"rich:datascroller

于 2008-12-04T14:48:39.727 に答える
0

私はずっと前に同様の問題を抱えており、ライブスクリプトを使用してページとやり取りするデータを表示するアプレットを作成することになりました。私のパフォーマンスの問題は、あなたが見ていたものと同じでした。クライアントはテーブル データをレンダリングするのに 30 秒以上かかりましたが、サーバーは 2 秒以内に応答を返しました。

于 2008-09-17T21:05:20.843 に答える
0

これは、テーブルをレンダリングするために生成された JavaScript のバグのようです。ページを別のブラウザーで試しましたか? どの JSF 実装を使用していますか (RI または MyFaces など)?

于 2008-10-08T16:32:07.700 に答える