【问题标题】:Client processing vs Server processing客户端处理与服务器处理
【发布时间】:2014-06-13 05:10:39
【问题描述】:

我正在做一个使用 MongoDB、java 和 angularJS 的项目。我面临一种情况,我必须一次在表视图 100 中显示数千条记录。我有两个选择:

  1. 我应该在每次点击分页时调用一个 web 服务,它会根据分页返回 100 条记录。

  2. 我将一次性带入所有记录并应用角度过滤器以在页面上显示 100。

就性能而言,哪种方法更好?

【问题讨论】:

  • 如果没有更精确的“性能”定义,这个问题无法真正回答。

标签: java angularjs mongodb jax-rs


【解决方案1】:

您永远不了解客户端计算机,因此您无法确定客户端处理记录的速度或速度。因此,通过提供服务器端分页来保持客户端的负载最小对我来说更有意义。

您可以更好地控制服务器端的内存/cpu,因此您始终可以在服务器上进行更好的处理。

如果您可以在客户端和服务器上的处理负载上取得平衡,那么您可以获得最佳结果。

【讨论】:

  • 是的,我明白你的意思,但是如果我们决定进行服务器处理,它会通过调用 http 请求的数量来增加网络流量。会影响应用性能吗?
  • @SumitD 多个请求会有一些开销,但无论如何重要的是实际的数据负载。添加到我的答案中,您需要平衡不同的环境参数客户端负载、服务器负载、网络流量等。
【解决方案2】:

要获取所有记录以供以后使用,您可以进行无限查询,这比有限部分要慢得多。同时,您尝试将所有数量的记录放在客户端内存中,如果堆真的很大,这可能会导致不必要的性能问题。另一方面,如果过滤器参数甚至主要选择被索引覆盖 - 你永远不应该考虑一次获取整个结果。 MongoDB 查询执行速度非常快,不应被视为应用程序的瓶颈。您的情况取决于总记录权重,如角度和建立正确查询的可能性。

【讨论】: