ADF Region性能调优之 Activation 属性
来源:互联网 发布:暴雪台服战网客户端mac 编辑:程序博客网 时间:2024/04/29 19:25
最近有个客户抱怨他们用ADF开发的系统,有的页面加载迟缓。经过分析发现,该页面有加载多达将近20个Region,这些Region在页面上的Tab页面,Popup中分别展现。ADF中的Region是页面上的一个区域,这个区域用于引用外部的页面片段或者Taskflow。Region是ADF框架中提高页面重用性的一个主要手段。在默认的配置下,Region在页面加载时会被激活,即使在Tab或者Popup组件没有在页面上显示时Region也会被激活并执行引用的Taskflow,因此如果一个页面上包含的Region过多,在默认情况下该页面的性能会相应的降低。对此,ADF提供了Activation属性来控制何时激活Region。
Activation属性的值有以下选择:
Immediate : 在页面加载时立即激活Region,该值为默认值。
deferred: 在使用Facelets作为页面实现时(非jspx),该值实现懒加载,但如果是jspx页面则该值等同于immediate。
conditional:通过输入一个表达式来确定是否激活Region。
在一个多Region的页面中,通常我们需要来控制何时激活这些region。因此我们会选择Activation的值为conditional并且设置active属性的表达式,具体过程如下所示:
1. 首先我们创建一个多region的页面,该页面包含了多个tab,每个tab会加载一个region,页面如下:
该页面的PageDef如下:
2. 为了实验目的,每个taskflow的默认节点为一个Method Call,该方法会调用一个POJO的DataControl的一个方法,该方法会在标准输出打印taskflow被激活的文字。
taskflow如下所示:
POJO方法如下:
3. 首先我们将所有region 绑定的taskflow的activation属性设置为默认immediate或者deferred,如下图所示:
运行该页面后, 可以在控制台看到所有taskflow在加载时都被运行了。
4. 在tab组件上添加setPropertyListener,使每次tab被disclose时都将设置一个EL表达式的值,该EL表达式会用于每个region判断是否要激活taskflow。
setPropertyListener 如下:
5. 在region的绑定中设置activation为conditional,并设置active的EL表达式,如下图所示:
6. 重新启动应用,加载该页面,可以看到仅第一个tab加载的region被激活,其他的region都未被激活。
总结:通过设置activation属性,我们可以控制ADF region何时被激活从而加快页面的加载速度。
- ADF Region性能调优之 Activation 属性
- ADF Region性能调优之 Activation 属性
- ADF各种性能调优
- ADF中VO绑定变量之required属性
- Control的Region属性
- ADF panelheader属性介绍
- Find an UIComponent in an ADF Task Flow Region
- ADF PartialTriggers属性 使用小结
- HBase学习之region
- HBase学习之Region
- ADF 调优指南之三:参数“Disconnect Application Module Upon Release”的实验报告
- Prism简介 Prism之Region
- GDI+函数之 Region::Complement
- HBase分析之Region定位
- ADF 下拉列表的属性设置
- 给ADF EO的属性设置值
- Oracle ADF PPR属性的疑问
- 给ADF EO的属性设置值
- 数据表合并字段,并入数据
- Linux驱动中,probe函数何时被调用
- /var/lib/dpkg/lock 锁定问题
- 【BZOJ1015 || JSOI2008】求联通块的个数
- AsyncQueryHandler
- ADF Region性能调优之 Activation 属性
- 关于2-sat判定求解中“同一组内必须选择”问题的思考
- JScript版的的CollectionBase类
- 有两个双向循环链表A,B,知道其头指针为:pHeadA,pHeadB,请写一函数将两链表中data值相同的结点删除
- 背景图片的居中显示
- Android Bitmap 使用
- WinCE下自定义的大软键盘
- ios消息推送机制原理与实现
- Openfire和Spark本地开发环境搭建记要