2

RemoteCommand 呼び出し Bean メソッドのタイム ラグにパフォーマンス上の問題があります。

xhtml ページである primefaces 4.0 を使用すると、実行時に大量の div がパネルに読み込まれます

<p:outputPanel id="runtime_panel" autoUpdate="true" />

一部の SelectOneRadio コントロールには、setOnchange() メソッドによるリスナーがあります。これらは、設計時に xhtml ページで定義されている RemoteCommand を呼び出します。

<p:remoteCommand name="ourRemoteCommand" 
actionListener="#{bean.someMethod}" update="runtime_panel"
/>

bean.someMethod の目的は、ajax を介してページ内の特定の GUI コントロールを表示または非表示にすることです。Bean はリクエストスコープです。

問題は、クライアントからbean.someMethodを呼び出すときに、一定のタイムラグが発生したことです。私のテストでは、javascript は突然応答しますが、サーバー側のブレークポイントを介してbean.someMethodをキャッチすると、かなり長い遅延が発生します (約 2.5 秒)。

また、bean スコープをセッション スコープに変更して、構築フェーズのラグをなくしましたが、この継ぎ目は問題ではありません。時間のラグは解決しませんでした。

「 runtime_panel 」に少量の要素しかない場合、遅延に気付かず、ブレークポイントは「 bean.someMethod 」ですぐに停止します。コントロールの数と応答時間の間には相関関係があります。

また、別のテストを作成します。ダミーの RemoteCommand を独自のフォームのページの先頭に配置します。

<form>
<p:remoteCommand name="rcgg" partialSubmit="true" process="@this" update="@none" actionListener="#{bean.testMethod()}" />
<h:outputText id="msgs" value="Ajax Submit" />
<p:commandButton type="button" onclick="console.log('client start');rcgg('ddd');console.log('client end')" value="Ajax1" icon="ui-icon-refresh" />
</form> 

そのため、サーバー側のコードもすぐに実行されます。しかし、「outputPanel」に多くの GUI 要素がある場合、この RemoteCommand「rcgg」とは関係なくても、サーバー側が実行を開始するまでにタイムラグが発生します。変。

また、いくつかの RemoteCommand 属性でテストしました (

immediate="false" async="true" partialSubmit="true" ignoreAutoUpdate="true" process="@none" global="false"  
 update="@none"

)しかし、成功もありません。

この「ビーンコールラグ」を取り除く方法がわかりません。
私は本当にあなたの助けが必要です。

4

2 に答える 2