Jsf 2 多用户界面的慢度:包括

Jsf 2 多用户界面的慢度:包括,jsf-2,primefaces,mojarra,Jsf 2,Primefaces,Mojarra,我们有一个页面,其中主要内容区域由ui:include控制,基本上我们有一个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
控制,基本上我们有一个
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
,是因为存在一个bug,在
ui:include
中,在
ui:include
外部使用的
@ViewScoped
bean被重新实例化,从而导致各种问题

任何时候我们执行某个动作都需要几秒钟(通常为7到15秒)才能执行该动作。例如,当我们更改
bean.page
属性并请求渲染时。即使我们做一些简单的事情,比如保存一个几乎不涉及任何其他事情的值,它也会非常缓慢。如果我删除所有的
h:panelGroups
ui:includes
,除了一个,那么这个站点的响应速度非常快(1到2秒)。据我所知,
ui:includes
中的所有页面以及它们使用的bean正在实例化

我们能做些什么来加速这一进程?我们在树脂4.0.32和primefaces 3.5上使用mojarra 2.1.13


谢谢。

您有任何自定义上下文参数吗?错误的值可能会显著影响性能

您可以尝试在
web.xml
中禁用facelets刷新:

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

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

我建议您使用,而不是使用
设置。使用JSF逻辑包含整个页面可能会带来问题,因为它们是在构建页面时包含的,而不是在呈现页面时包含的。我也遇到了同样的问题,这就是为什么我选择了
h:panelGroup
rendered
,而不是使用动态
ui:include
。我必须查看自定义facelet标记。
<context-param>
    <param-name>javax.faces.PROJECT_STAGE</param-name>
    <param-value>Production</param-value>
</context-param>