4

メイン コンテンツ エリアが によって制御されるページがありますui:includes。基本的にはh:panelGrouprendered条件とそのui:include内部があります。

このような:

<h:panelGroup rendered="#{bean.page.id eq bean.page1ID}">
        <ui:include src="page.xhtml"/>
</h:panelGroup>

約10個あります。各ページはかなり複雑で、独自の Bean がいくつかあります。動的ではなくレンダリングされたトリックを行う理由は、 の外部で使用された Bean がの内部で再インスタンス化されるui:includeというバグがあり、あらゆる種類の問題を引き起こすためです。@ViewScopedui:includeui:include

アクションを実行するたびに、アクションが実行されるまでに数秒 (通常は 7 ~ 15 秒) かかります。たとえば、bean.pageプロパティを変更してレンダリングをリクエストする場合です。値を保存するなど、他にほとんど何も関係のない単純なことを行う場合でも、それは本当に遅いです。h:panelGroups1 つをui:includes除いてすべてを削除すると、サイトは非常に高速になります (1 ~ 2 秒の応答)。私が知る限り、すべてのページui:includesとそれらが使用する Bean がインスタンス化されています。

これをスピードアップするにはどうすればよいでしょうか? レジン 4.0.32 とプライムフェイス 3.5 でモハラ 2.1.13 を使用しています。

ありがとう。

4

1 に答える 1

1

カスタム コンテキスト パラメータはありますか? そこに間違った値があると、パフォーマンスに大きな影響を与える可能性があります。

で facelets の更新を無効にすることを試みることができますweb.xml

<context-param>
  <param-name>facelets.REFRESH_PERIOD</param-name>
  <param-value>-1</param-value>
</context-param>

この値を -1 に設定すると、ビュー宣言の変更に対する内部チェックが無効になります。これは、再デプロイしないと xhtml ページをリロードできないことを意味しますが、パフォーマンスが向上することも意味します。

または、プロジェクト ステージを に設定することもできますProduction(これには他のパラメーターが含まれている必要があります)。これにより、開発のための多くの追加チェックや機能が無効になります。

<context-param>
    <param-name>javax.faces.PROJECT_STAGE</param-name>
    <param-value>Production</param-value>
</context-param>

これら 2 つの設定は、生産環境では常に使用する必要があります。

于 2013-04-27T07:39:18.723 に答える