如何提高RichFaces ScrollableDataTable控件的性能?

时间:2008-09-17 18:30:41

标签: jsf richfaces

首先,一点背景:

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

3 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:0)

我很久以前遇到过类似的问题,最后编写了一个applet来显示使用livescript与页面交互的数据。我的表现问题与你所看到的一样。客户端花了30多秒来渲染表数据,服务器在不到2秒的时间内完成了我的响应。

答案 2 :(得分:0)

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