提问人:Jonas 提问时间:1/21/2022 最后编辑:Jonas 更新时间:1/21/2022 访问量:526
在客户端或服务器端对数据进行操作是最佳做法吗?
Is it a best practice to do operations with data in the client-side or in the server-side?
问:
例如,如果我必须对数据库中的数据数组进行排序,以将其附加到网页的正文中。在性能方面,我应该在服务器端对其进行排序,然后将其发送给客户端,还是应该按原样发送数据并在客户端进行排序,或者没有区别?
答:
如果在客户端上执行此操作,则无论客户端计算机的速度有多快,每个客户端都必须对数据进行排序。它可能是开发人员的超强大笔记本电脑,也可能是某人 5 年前的廉价 Android 手机。
如果你在服务器上执行此操作,那么服务器必须对每个客户端的数据进行排序,并且你必须为计算资源付费。但是,您确实有机会缓存排序后的数据,这是一种保存(如果数据不会太频繁地更改)。
这里没有一个放之四海而皆准的答案。
这是初学者、中级和专家开发人员可能遇到的常见问题。这确实是一个架构问题,最好在尽可能多的上下文中回答。
您的 API 运行在什么上?如果您在云(AWS、Azure 等)中托管,您是否试图通过最小化资源使用来最大限度地降低托管成本?如果是这样,将这项工作推给客户端可能会大规模提供帮助,但对于小型应用程序来说可能可以忽略不计。
你的客户呢?您是否只在企业环境中支持台式计算机,因为您很有可能将其规范通用化?或者,计算资源最少的 IoT 设备是否与您的 API 联系?在后一种情况下,客户端设备可能没有内存或计算能力来对数据进行排序,同时仍能满足其其余职责。可能有 10-20 年历史的移动设备怎么办?
这是 API 上的固定行为,还是客户端可以请求服务器端排序?您希望 API 提供什么样的灵活性,以及为每个方面实现开关和参数的可行性如何?在什么时候你做得太多了,用过多的按钮和拨盘来配置或调整,掩盖了 API 的目的。
根据我的个人经验,我喜欢像 Sequelize 这样的 ORM,它们可以毫不费力地在 API 上提供很大的灵活性,但这些工具可能会带来计算成本和潜在的(但通常不常见)安全问题。它们是非常通用的实现,并不总是适合您的用例。
评论