【问题标题】:How can I improve the performance of the RichFaces ScrollableDataTable control?如何提高 RichFaces ScrollableDataTable 控件的性能?
【发布时间】:2008-09-17 18:30:40
【问题描述】:

首先,有一点背景:

我正在使用 ScrollableDataTable 显示一个包含 288 行和 8 列(2304 条记录)的数据集,性能还有很多不足之处。重新呈现控件的 AJAX 请求需要近 20 秒才能完成,而使用 DataTable 控件呈现相同数据时需要 7 秒。

通过 Servlet 过滤器和 JavaScript 捕获的指标表明,几乎所有的处理时间都花在了客户端上。在 19.87 秒的请求中,3.87 秒花费在服务器上……查询和排序数据的时间不到 0.6 秒。

切换到 DataTable 控件将请求、响应和呈现周期缩短到我在 ScrollableDataTable 中看到的 1/3,但也删除了几个重要功能。

现在的问题是:

还有其他人遇到过 ScrollableDataTable 的性能问题吗?在 JSF/RichFaces 中使用固定列和两轴滚动呈现大量表格数据的最有效方法是什么?

更新:

我们最终编写了一个自定义控件。对渲染组件和生成的 JavaScript 的完全控制使我们能够实现与 DataTable 相当的响应时间。不过我同意 Zack 的观点——分页是正确的答案。

【问题讨论】:

    标签: jsf richfaces


    【解决方案1】:

    瓶颈很可能出现在 JSF 生命周期的“渲染响应”阶段。它试图一次为视图渲染太多组件。

    我的建议是使用分页。它应该会显着提高您的性能,因为它一次渲染视图的较小部分。

    确保您的 rich:dataTable 设置了 rows 属性,并且 - 如果您正在执行任何列过滤 - 确保日期表也具有属性 reRender="paginator" 其中 paginator 是您的 rich:datascroller .

    【讨论】:

      【解决方案2】:

      很久以前我遇到过类似的问题,最后写了一个小程序来显示使用 livescript 与页面交互的数据。我的性能问题与您所看到的相同。客户端花了 30 多秒来呈现表格数据,而服务器在不到 2 秒的时间内将我的响应转过来。

      【讨论】:

        【解决方案3】:

        这听起来像是为呈现表格而生成的 javascript 中的错误。您是否在不同的浏览器中尝试过该页面?您正在使用哪个 JSF 实现(RI 或 MyFaces 或其他)?

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-05-03
          • 1970-01-01
          • 2013-05-15
          • 1970-01-01
          • 1970-01-01
          • 2012-05-10
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多