我应该在后端还是前端过滤数据?

Ree*_*eed 6 rest reactjs spring-boot redux

我有一个用 Spring 构建的 Web 服务,我的视图是用 React 构建的,我使用 Redux 进行状态管理。

假设我的 API 有一个端点/api/products,并且我已经实现了搜索功能,该功能从该端点提取所有产品,将它们存储在 Redux 存储中并显示它们。现在我想实现排序功能,我有两个实现它的想法:

  1. 修改我的 api 端点/api/products以获取参数。例如/api/products?sortBy=price(UI 中逻辑较少,网络请求较多)

  2. 使用我在商店中存储的产品。(更少的网络请求,更多的 UI 逻辑)

其中哪一项(如果有)将被视为最佳实践?

小智 6

这取决于

  • 可接受的延迟是多少?您需要多久调用一次此列表?几乎每一秒,就像在自动完成字段中一样?比如说,对于用户按不同参数排序的报告,每分钟几次?或者像很少使用的设置页面之类的东西?
  • 您有多少数据?是几百万吗?或者几十个?如果太多,最好在后端进行过滤并仅发送所需的行。
  • 每行有多大?如果每一行都很大并且有很多字段,那么您的有效负载将会增加。
  • 您是否必须在初始加载时间(从后端加载所有数据一次)与响应能力(当用户与数据交互时)之间进行权衡?

我希望这能让您了解如何做出决定。如果您有具体情况的详细信息,也许可以进行更多讨论。


RaV*_*RaV 1

你必须使用后端。如果您有大约 3000 条记录,则需要使用分页。您不应该在前端对所有页面进行排序,因为这会产生太多数据。您需要使用后端来排序并仅发送您想要在特定页面上显示的数据。