【问题标题】:PrimeFaces rendered attribute impact on performancePrimeFaces 渲染属性对性能的影响
【发布时间】:2017-03-21 11:41:07
【问题描述】:


我正在使用 PrimeFaces 开发一个 JSF 应用程序,我计划在其中主要使用 tabViews(多个)。为了让您大致了解应用程序将如何工作,我有一个侧面菜单,用户应该能够从中选择“模块”,这些“模块”将在中心布局中显示为选项卡。鉴于我有多个“模块”并且将来还会有更多,我决定使用的解决方案是为我在 xhtml 中拥有的所有选项卡编写代码,然后使用渲染属性(默认设置为 false ) 以显示它们(当用户单击相应的菜单时)。

现在我的问题是,将组件的渲染属性设置为 false 是否等于该组件根本不存在(对性能没有影响)?

【问题讨论】:

  • 是的,但它确实会影响您的性能,影响您性能的是您对 CPU 的请求和查询的复杂性
  • 例如,最好使用内存来存储每次需要时重复操作的复杂操作的结果
  • @YagamiLight 这是否意味着只要将渲染属性设置为 false,我就可以拥有任意数量的组件而不会影响性能?
  • 是和非:请估计您必须创建多少个可能的 xhtml 文件
  • 不要忘记,您创建的每个页面都是您在每次部署应用程序时在应用程序中使用的空间,这需要一些时间,但对于用户而言,如果页面不复杂,它确实如此影响用户体验

标签: jsf primefaces


【解决方案1】:

现在我的问题是,将组件的渲染属性设置为 false 是否等同于该组件根本不存在(对性能完全没有影响)?

这不是等价的。如果设置rendered=false,则该组件仍然存在于服务器端的组件树中。因此,它会消耗一点性能和内存。

Mojarra 过去在组件树较大时也存在很大的性能问题:https://blog.oio.de/2013/05/16/jsf-performance-mojarra-improves-dramatically-with-latest-release/

【讨论】:

  • 感谢您的澄清,现在我正在使用上面 Yagami Light 建议的方法,我认为这不会影响性能:我在主目录中拥有所有选项卡页面,我从我的托管 bean 控制它们的渲染属性以及它们内部包含标签的源属性(以其他方式,包含标签的源是空的,直到其父选项卡渲染属性变为真)
【解决方案2】:

要像模板一样使用您的 xhtml 页面,请按照以下步骤操作

第 1 步:创建我的包含页面

<ui:composition  xmlns:ui="http://java.sun.com/jsf/facelets"
                 xmlns:h="http://java.sun.com/jsf/html"
                 xmlns:p="http://primefaces.org/ui"
                 xmlns:f="http://java.sun.com/jsf/core"
                 >

<h:form id="form">
  ... 
</h:form>
</ui:composition>

假设这个页面的名字是myTemplate.xhtml

第 2 步:每次需要时使用模板页面

<ui:composition xmlns:ui="http://java.sun.com/jsf/facelets"
                template="/templates/templateCrb.xhtml"
                xmlns:p="http://primefaces.org/ui"
                > 

    <ui:define name="MyContent">
        <ui:include src="/pages/.../myTemplate.xhtml">
        </ui:include>
    </ui:define>
</ui:composition>    

在这种情况下,我包含了一个完整的页面,但您可以在对话框、tabView 中使用它,您也可以向包含元素发送参数。

您可以在more informations about include 阅读更多内容。

希望对您有所帮助。

【讨论】:

  • 告诉我你是否需要一个带参数的例子,如果答案让你满意,为什么不投票;)
猜你喜欢
  • 2012-03-14
  • 1970-01-01
  • 2013-01-30
  • 1970-01-01
  • 1970-01-01
  • 2011-06-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多