4

我们有一个页面,其中主要内容区域由 控制ui:includes,基本上我们有h:panelGroup一个rendered条件和ui:include它的内部。

像这样:

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

我们有大约 10 个。每个页面都非常复杂,有一些自己的 bean。我们使用渲染技巧而不是动态ui:include的原因是因为存在一个错误,其中在@ViewScoped外部使用的 bean 在ui:include内部重新实例化,ui:include从而导致各种问题。

每当我们执行某个动作时,都需要几秒钟(通常是 7 到 15 秒)才能执行该动作。例如,当我们更改bean.page属性并请求渲染时。即使我们做一些简单的事情,比如保存一个几乎不涉及其他任何东西的值,它也真的很慢。如果我删除除一个之外的所有内容h:panelGroupsui:includes则该站点非常快(1 到 2 秒响应)。据我所知,ui:includes他们使用的所有页面和 bean 都被实例化了。

我们能做些什么来加快这个速度?我们在树脂 4.0.32 和 primefaces 3.5 上使用 mojarra 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>

这两个设置应始终在生产环境中使用。

于 2013-04-27T07:39:18.723 回答