数据排序应该在客户端还是服务器上完成
Should data sorting be done on the client or on the server?
我从服务器获取数据,并希望在客户端上使用GWT显示它。
GWT不是这里的问题,你可以用Ajax调用替换GWT,或者你可以把它转置到一个真正的应用程序而不是一个Web应用程序。
在接收数据后和显示数据之前,应该在服务器上还是在客户端上使用 JavaScript 进行排序?
每种方法都有其优点和缺点:
- 如果您需要分页,并且不想将整个数据下载到客户端,则必须在服务器上执行排序(否则客户端只能对当前拥有的行进行排序,如果按其他列重新排序,将导致错误的结果(
- 在服务器上排序更快(如:您可以每秒排序更多行(,但如果您必须一次为 10000 个客户端提供服务,这可能很容易反转。
- 在客户端上排序时,无需再次下载数据即可重新排序。
理想情况下,排序应该在服务器上完成,因为:-
-
最好假设客户端的资源不足。例如,有些人会从桌面启动GWT应用程序,但另一个人可能会从CPU/RAM较少的iPad/手机启动GWT应用程序
。 有一些标准方法可以在服务器端进行排序,例如,通过使用 SQL ORDER BY 子句,但您可能必须实现自己的例程/方法来在客户端进行排序。
这取决于... :)
- 要排序多少数据? 有多快?"尽可能快"好吧...你能接受的最慢的是什么?客户端可以处理吗? 服务器呢?这些因素还有哪些其他责任,这是否会造成冲突?
- 数据排序的可靠性如何? 例如,如果数据有时没有排序,这可以吗?
- 如何将职责分配给体系结构中的元素? 就此而言,有哪些要素?你有数据库吗? 业务层呢?世界可能比"客户端与服务器"更复杂
- 数据将如何使用? 是否需要执行多个排序? 例如,A->Z 和 Z->A?
- 在客户端和服务器之间传输数据的成本是否合理? 还有其他方法可以使其合理吗?
从架构上讲,要回答这个问题,您需要确定系统中所需的属性,并评估各种设计备选方案之间的权衡。 如果不了解有关您的系统的更多信息,则很难提供超出此范围的建议。
人们应该小心一个包罗万象的声明,即在服务器上排序总是比在客户端上更快。 我有一个案例,我返回了按姓氏和名字的串联排序的数千条记录。 这些字段都没有索引,我无法控制这一点。 众所周知,对串联字符串进行排序并不是数据库本质上做得好的事情。 它查找数字和/或索引字段。 在这种情况下,在客户端上进行排序最终会更快。如果我控制了数据库,我会在 Oracle 中对这两个字段放置一个函数索引。
这个故事的寓意是假设什么都不做,并分析你的应用程序,以找出最适合你的方案的方法。
相关文章:
- 客户端服务器REST API captcha实现
- 使用谷歌应用程序脚本将服务器端数据表返回到客户端
- 如何使用Socket.io将命令从客户端发送到服务器
- 如何轻松地将服务器端变量从Java代码转移到客户端代码
- 从客户端获取修改后的对象,并将其与服务器上的原始对象组合
- 将客户端特定的日期格式返回到服务器MVC4
- 服务器上的Meteor客户端断开连接事件
- 在Javascript服务器/客户端中共享对象定义
- 可以't连接客户端和服务器import.io
- 套接字服务器向客户端广播,但不从两者接收
- 使用COMETD将服务器推送到客户端(dojo)
- 了解如何在javascript/HTML5/NodeJS中实现客户端-服务器-客户端基础结构
- 服务器过载..有要求?如何有效地对服务器-客户端进行编程
- Math.sin()在服务器/客户端上给出不同的结果
- Internet Explorer浏览器问题:浏览器不提交POST数据与Ajax请求,服务器/客户端挂起
- 如何在连接服务器客户端之前获得IP地址(使用websockets/ws)
- Node.js服务器/客户端模块混乱,EventEmitter问题
- 服务器-客户端推/拉连接是如何工作的
- 如何执行在服务器/客户端使用回调参数的javascript函数
- 最好的jQuery/Java PHP解决方案为本地主机服务器-客户端实时聊天