在GWT中将大型数组从服务器传输到客户机

Transferring large arrays from server to client in GWT

本文关键字:服务器 传输 客户机 数组 GWT 大型      更新时间:2023-09-26

我试图使用异步RPC调用将一个大型二维数组(17955 X 3)从我的服务器转移到客户端。这将花费很长时间,这尤其糟糕,因为初始化应用程序需要这些数据。我读到过使用JSON对象可能会更快,但我不确定如何在Java中进行转换,因为我对语言和GWT都很陌生,而且我不知道速度差异是否显著。我也在某个地方读到我可以压缩数据,但我只在论坛上读到过,我不确定这是否真的可能,因为我在其他地方找不到相关信息。是否有办法将大量数据从服务器传输到客户机?感谢您的宝贵时间。

阅读这篇关于向GWT添加JSON功能的文章。关于压缩,本文解释了使用GWT进行压缩。

另外,即使使用gzipping可以实现压缩,数组的大小仍然非常大,这将取决于数组中重复的数据量。如果可能的话,您可能需要考虑在逻辑上将数组分解为多个RPC调用。

如果您的应用程序需要如此大量的数据来初始化,我建议您重新审视您的设计。

正如其他人指出的那样,您应该重新考虑您的设计,因为即使您能够以某种方式解决数据传输速度问题,您也可能会发现其他问题正在等待您:

  1. 在浏览器中处理大量数据可能很慢。
  2. 大量数据意味着大量已用内存

你能想到的是:

数据分区:

你的用户将如何处理大量数据。您的用户可能需要某种用户界面帮助才能处理如此庞大的数据。如果您打算使用分页、选项卡或其他方式对数据进行分区以供用户使用,为什么不按需加载数据呢?例如,如果使用分页网格,则可以加载单页记录,如果要使用选项卡,则可以加载单个选项卡值的记录。类似地,如果您打算允许对记录进行过滤,则可以在加载后设置默认过滤器,以将数据保持在最小值。

汇总数据:

如果不打算向用户显示每一行,还可以对服务器上的数据进行汇总。例如,您可以首先显示每组记录的摘要,并让用户在特定组

中下钻取。