[英]How can I improve the performance of the RichFaces ScrollableDataTable control?
首先,一点背景:
我正在使用ScrollableDataTable显示一个包含288行和8列(2304条记录)的数据集,性能还有很多不足之处。 与使用DataTable控件渲染相同数据时的7秒相比,重新启动控件的AJAX请求需要将近20秒才能完成。
通过Servlet过滤器和JavaScript捕获的度量标准表明,几乎所有的处理时间都花费在客户端。 在19.87秒的请求中,在服务器上花费了3.87秒...用于查询和排序数据的时间少于0.6秒。
切换到DataTable控件将请求,响应和渲染周期缩短到我在ScrollableDataTable中看到的1/3,但也删除了几个重要的功能。
现在的问题是:
有没有其他人遇到过ScrollableDataTable的性能问题? 使用固定列和双轴滚动在JSF / RichFaces中呈现大量表格数据的最有效方法是什么?
更新:
我们最终编写了一个自定义控件。 完全控制渲染的组件和生成的JavaScript允许我们实现与DataTable相当的响应时间。 我同意扎克的看法 - 分页是正确的答案。
瓶颈最有可能出现在JSF生命周期的“渲染响应”阶段。 它试图一次为视图渲染太多组件。
我的建议是使用分页。 它应该显着提高您的性能,因为它一次渲染视图的较小部分。
确保您的rich:dataTable
设置了rows
属性,并且 - 如果您正在进行任何列过滤 - 请确保日期表还具有属性reRender="paginator"
,其中paginator是您的rich:datascroller
。
这听起来像是为了呈现表而生成的javascript中的错误。 您是否在不同的浏览器中尝试过该页面? 您使用哪种JSF实现(RI或MyFaces或其他)?
很久以前我遇到过类似的问题,最后编写了一个applet来显示使用livescript与页面交互的数据。 我的表现问题与你所看到的一样。 客户端花了30多秒来渲染表数据,服务器在不到2秒的时间内完成了我的响应。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.