我正在研究Orbeon表格,我有一个与性能相关的问题,如下所述。
我有一个表格,我最初有五个字段。在第五个下拉字段中,如果我选择“是”,由于xforms:group
它显示一个字段块(该块有大约40个字段)。
由于块在重复部分,我可以添加/删除尽可能多的块。
现在,如果我添加10个块,当我将第五个下拉字段从任何值切换为“是”时,显示所有块需要2秒以上。
我在Windows XP桌面上使用Orbeon Forms 3.8和Tomcat 6,内存为2GB。
请让我知道选择“是”时会发生什么(意味着当xforms:group为true时条件显示),这会花费更多时间来显示。
<xforms:group ref=".[instance('form-attributes')/flag='yes']" >
//code for the controls here
</xforms:group>
答案 0 :(得分:1)
如果您使用的代码如下:
<xforms:group ref=".[condition]">
<!-- Large number of fields -->
</xforms:group>
condition
为false时,组内的字段不相关。 XForms引擎不会计算它们的值,只读状态,有效性,标签,提示,帮助,警报等。condition
成立时,组的内容变得相关,XForms引擎会评估组内的所有控件。通常,步骤#2比#3快得多,特别是对于IE7。为了避免步骤#3的大量更新,编写此代码的另一种方法是:
<xhtml:div class="{if (condition) then '' else 'xforms-disabled'}">
<!-- Large number of fields -->
</xhtml:div>
有了这个,div
内的字段将永远是相关的:
condition
成为现实时,浏览器可能需要做的就是在div
上翻转该类。它不一定需要更新内部的所有控件,除非它们的值也发生了变化。condition
为false,但服务器上的XForms引擎需要保持div
内的所有控件都是最新的。但通常情况下,尤其是当您看到IE7的速度变慢时,您在客户端上获得的性能远远超过服务器上可能需要的增加的处理。
答案 1 :(得分:0)
我发现此link似乎建议使用span
标记而不是div
标记,尽管最初的帖子是代码崩溃,建议的工作在我的表单中提供了一些小的性能改进在IE中测试它。希望这段代码能给你带来一些好处。