Java GWT将大量数据从服务器发送到客户端的最佳实践

Java GWT将大量数据从服务器发送到客户端的最佳实践,java,gwt,javabeans,gwt-rpc,Java,Gwt,Javabeans,Gwt Rpc,在GWT中,从服务器向客户端发送大量数据的最佳实践是什么 目前,我们在GWT2.3.0中面临性能问题 我们的服务器端正在向客户端发送巨大的xml(大小以MB/GB为单位),客户端解析该xml并使用解析后的数据,形成bean列表以填充Celltable网格中的数据 我们正在CellTable网格中填充1k+/10k+记录 在处理如此庞大的数据时,是否有任何有效的方法/最佳做法? 如果我们在服务器端解析数据,并在服务器端形成bean,这好吗?或任何其他方式 在此问题上的任何帮助或指导都将不胜感激 基

在GWT中,从服务器向客户端发送大量数据的最佳实践是什么

目前,我们在GWT2.3.0中面临性能问题

我们的服务器端正在向客户端发送巨大的xml(大小以MB/GB为单位),客户端解析该xml并使用解析后的数据,形成bean列表以填充Celltable网格中的数据

我们正在CellTable网格中填充1k+/10k+记录

在处理如此庞大的数据时,是否有任何有效的方法/最佳做法? 如果我们在服务器端解析数据,并在服务器端形成bean,这好吗?或任何其他方式


在此问题上的任何帮助或指导都将不胜感激

基本上,您只请求与用户当前查看的数据相同的数据量(以及稍多的数据量),而不是整个数据集


有关更多详细信息,请参阅。

在处理案例中的大数据时,有两种做法:

1) 使用JSON而不是xml,这样客户端就不需要解析数据,而是可以直接使用数据。在GWT中,通过GWT-JSNI接口,您可以编写访问这些JavaScript对象的数据对象,请参阅:。使用JSON REST库,您可以在服务器上生成JSON,而不是将xml发送到客户端。但您也可以在客户机/服务器上使用GWT-RPC,这使得编程更容易,因为与JSON之间的整个数据转换都由GWT处理,但会向发送的对象添加一些类型信息

2) 使用分页:只获取用户可见的数据,并将其缓存在客户机中。如果您有一个表格演示,那么用户不可能同时需要所有数据。GWT单元面板具有开箱即用的支持(请参阅Oliver提到的关于添加分页控件的链接)

  • 使用分页。GWT单元小部件支持开箱即用的分页。因此,实现服务器端分页,以便每次单击“下一步”时都会进行服务器调用。这样,客户机一次只处理10或20条记录

  • 使用Javascript覆盖类型作为显示bean。为了填充这些bean,使用JSON作为传输模型,而不是XML。如果使用XML(即异步调用),那么GWT会在后端执行一些JAXB编组/解编组逻辑。如果您使用JSON,大部分都可以避免


  • 与其他答案一样,只返回用户可以有效使用的数据,并在用户请求时(或)惰性地获取其他数据

    请参阅此处的AsyncDataProvider部分:

    数据压缩的效果如何?如果延迟在网络中,压缩-发送-解压缩可能会更快。