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>