在客户端或服务器端对数据进行操作是最佳做法吗?

Is it a best practice to do operations with data in the client-side or in the server-side?

例如,如果我必须对数据库中的一组数据进行排序以将其附加到网页正文中。在性能方面,是在服务器端排序,然后发送给客户端,还是直接发送数据,在客户端排序,还是没有区别?

如果在客户端进行,那么无论客户端计算机有多快,每个客户端都必须对数据进行排序。它可能是开发人员的超强大笔记本电脑,也可能是某人 5 年前的预算 Android phone.

如果你在服务器上做,那么服务器必须为每个客户端的数据排序,你必须为计算资源付费。但是,您确实有机会缓存​​已排序的数据,这是一种节省(如果数据更改不太频繁)。

这里没有放之四海而皆准的答案。

这是初级、中级和专家级开发人员可能会遇到的常见问题。这确实是一个架构问题,最好结合尽可能多的上下文来回答。

你的 API 运行 是什么?如果您在云(AWS、Azure 等)中托管,您是否正在尝试通过最小化资源使用来最小化托管成本?如果是这样,将这项工作推给客户端可能会在规模上有所帮助,但对于小型应用程序来说可能可以忽略不计。

你的客户呢?您是否只在企业环境中支持台式机,您很可能可以概括它们的规格?还是具有最少计算资源的物联网设备正在联系您的 API?在后一种情况下,客户端设备可能没有内存或计算能力来对数据进行排序,同时仍能满足其其余职责。那些可能有 10-20 年历史的移动设备呢?

这是您 API 的固定行为,还是客户端可以请求服务器端排序?您希望 API 提供什么样的灵活性?为每个方面实现开关和参数的可行性如何?在什么时候你做得太多了,用过多的按钮和转盘来配置或调整来掩盖 API 的目的。

根据我个人的经验,我喜欢 Sequelize that can expose a lot of flexibility on your API with little work, but these tools can come at a computational cost and potential (but usually infrequent) security issues 这样的 ORM。它们是非常通用的实现,并不总是适合您的用例。