【问题标题】:Slowness in Orbeon page rendering when showing a group with a large number of fields显示具有大量字段的组时,Orbeon 页面呈现缓慢
【发布时间】:2011-09-08 12:01:25
【问题描述】:

我正在处理 Orbeon 表单,但我遇到了与性能相关的问题,如下所述。

我有一个表格,最初有五个字段。在第五个下拉字段中,如果我选择“是”,因为xforms:group 它会显示一个字段块(该块有大约 40 个字段)。 由于块在重复部分,我可以添加/删除尽可能多的块。

现在,如果我添加 10 个块,并且当我将第五个下拉字段从任何值切换为“是”时,显示所有块需要超过 2 秒。

我在具有 2GB RAM 的 Windows XP 桌面上使用 Orbeon Forms 3.8 和 Tomcat 6。

请让我知道选择“是”时会发生什么(在xforms:group为true时有条件显示),这需要更多时间来显示。

<xforms:group ref=".[instance('form-attributes')/flag='yes']" >
    //code for the controls here
</xforms:group>

【问题讨论】:

  • 抽象地解决性能问题将是困难的。请注意,您应该尝试 3.9,包括 3.9 PE,它使用 XPath 依赖引擎来加速更新。
  • 您好,感谢您的更新。我在 3.9 CE 中尝试过,但没有大的改进。我会试试 PE 并告诉你。
  • 本次测试您使用的是哪个浏览器?如果您尝试使用 IE 和 Chrome,您是否发现有显着差异? Chrome 比 IE 快得多吗?如果是,我建议您尝试 3.9 PE 附带的完整更新机制。您可以在 wiki.orbeon.com/forms/doc/developer-guide/… 找到更多相关信息
  • 嗨,我用的是 IE7。但是在 FireFox 中表单更快。我没有尝试 Chrome。我还尝试了完整的更新机制,即使使用 IE7,性能也得到了显着提升。该链接非常有帮助。非常感谢。

标签: orbeon xforms performance-testing


【解决方案1】:

如果您使用的代码如下所示:

<xforms:group ref=".[condition]">
    <!-- Large number of fields -->
</xforms:group>
  1. 当condition 为假时,组内的字段不相关。 XForms 引擎不计算它们的值、只读状态、有效性、标签、提示、帮助、警报等。
  2. 当condition 变为真时,组的内容变得相关,XForms 引擎评估组内的所有控件。
  3. 浏览器需要将所有这些更改应用到 DOM。

通常,第 2 步比第 3 步快得多,尤其是在 IE7 中。为避免步骤 #3 的大量更新,编写此代码的另一种方法是:

<xhtml:div class="{if (condition) then '' else 'xforms-disabled'}">
    <!-- Large number of fields -->
</xhtml:div>

这样,div 中的字段将始终相关:

  • 好处是当condition 变为真时,浏览器可能需要做的就是翻转div 上的那个类。它不一定需要更新里面的所有控件,除非它们的值当然也发生了变化。
  • 缺点是虽然condition 为假,但服务器上的XForms 引擎需要使div 中的所有控件保持最新。

但通常情况下,尤其是当您看到 IE7 运行缓慢时,您在客户端上获得的性能远远超过了服务器上可能需要的处理能力。

【讨论】:

    【解决方案2】:


    我发现这个link 似乎建议使用span 标签而不是div 标签,虽然最初的帖子是针对代码崩溃的,但当我在IE 中测试它时,建议的解决方法在我的表单中给出了小的性能改进。希望这段代码能给你带来一些好处。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-03
      • 2018-08-26
      • 1970-01-01
      • 1970-01-01
      • 2012-07-08
      • 1970-01-01
      相关资源
      最近更新 更多