5

首先,一点背景:

我正在使用 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 的观点——分页是正确的答案。

4

3 回答 3

1

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

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

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

于 2008-12-04T14:48:39.727 回答
0

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

于 2008-09-17T21:05:20.843 回答
0

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

于 2008-10-08T16:32:07.700 回答