19

我从服务器获取数据并希望在客户端使用 GWT 显示它。

GWT 不是这里的问题,您可以通过 Ajax 调用替换 GWT,或者您可以将其转换为实际应用程序而不是 Web 应用程序。

在接收数据之后和显示它们之前,应该在服务器上还是在客户端上使用 JavaScript 进行排序?

4

4 回答 4

23

每种方法都有其优点和缺点:

  • 如果需要分页,又不想将整个数据下载到客户端,那么就必须在服务端进行排序(否则客户端只能对当前拥有的行进行排序,会导致错误的结果,如果你按不同的列重新排序)
  • 在服务器上排序更快(例如:您可以每秒排序更多行),但如果您必须一次为 10000 个客户端提供服务,这可能很容易反转。
  • 在客户端排序时,无需重新下载数据即可重新排序。
于 2012-05-23T14:04:55.290 回答
7

理想情况下,排序应该在服务器上完成,因为:-

  1. 最好假设您的客户资源不足。例如,有些人会从桌面启动 GWT 应用程序,但另一些人可能会从 CPU/RAM 较少的 iPad/手机启动 GWT 应用程序

  2. 有在服务器端进行排序的标准方法,例如,通过使用 SQL ORDER BY 子句,但您可能必须实现自己的例程/方法才能在客户端进行排序。

于 2012-05-23T14:06:47.923 回答
4

这取决于... :)

  1. 有多少数据需要排序?多快?“尽可能快”好的……你能接受的最慢的速度是多少?客户可以处理吗?服务器呢?这些元素还有哪些其他职责,这会产生冲突吗?
  2. 数据排序的可靠性如何?例如,如果数据有时没有排序,这样可以吗?
  3. 您的架构中的元素是如何分配职责的?就此而言,元素是什么?你有数据库吗?业务层呢?世界可能比“客户端与服务器”更复杂
  4. 数据将如何使用?是否需要执行多种排序?例如,A->Z 和 Z->A?
  5. 在客户端和服务器之间传输数据的成本是否合理?还有其他方法可以使它合理吗?

从架构上讲,要回答这个问题,您需要确定系统中所需的属性并评估各种设计备选方案之间的权衡。在不了解您的系统的情况下,很难提供除此之外的建议。

于 2012-05-24T17:33:30.560 回答
0

应该注意一个包罗万象的声明,即在服务器上排序总是比在客户端上排序更快。我有一个案例,我返回了几千条按姓氏和名字串联排序的记录。这些字段都没有被索引,我无法控制这一点。众所周知,对连接的字符串进行排序并不是数据库本质上做得很好的事情。它看起来是数字和/或索引字段。在这种情况下,在客户端上进行排序最终会更快。如果我可以控制数据库,我会在 Oracle 中在这两个字段上放置一个函数索引。

这个故事的寓意是什么都不做,并分析您的应用程序以找出最适合您的场景的方法。

于 2020-06-16T15:49:03.563 回答