我正在用ReactJS开发一个新应用,并在客户端实现了排序/过滤。但是,浏览较大的开源SPA之后,我看到许多人通过API在服务器端执行此操作。除了性能,它们是否在客户端方面有任何弊端?

最佳答案

这主要取决于数据的总潜在大小。

客户端

如果这是您永远无法拥有的东西,例如50个项目,列表 View 不需要太多数据,那么您只需将其全部发送给客户端即可。

这样的一个示例是具有受限大小的子列表。例如,如果您的站点是一家商店,并且您只能出售50件商品,那么您可以一次将它们发送出去。不利之处在于,如果以后将其更改为更大的数字,则需要使用服务器端分页/排序来重写它。

服务器端

通常,在应用程序中,列表中可能有成千上万的项目。一个示例就是questions/unanswered,其中每个项目都需要大量数据来表示,并且在撰写本文时已超过200万个项目。

尝试一次将200万个stackoverflow问题加载到客户端上是不可行的,并且即使服务器和数据库数量达到1000件,也要贵得多。

默认情况下,应在数据库上执行排序/过滤,因为通常要求对偶数用户允许缩放。在特定情况下,您可以将所有内容作为优化加载到客户端上。

客户端数据库

当网络是您的瓶颈时,此功能特别有用,并且用户可能会长时间(可能处于脱机状态)使用此应用程序。

当应用程序启动时,您将下载大量数据,并将其存储在IndexedDB(或简单对象,具体取决于数量)中。然后,您可以与此数据进行交互,而不受服务器端api或网络性能和可靠性的限制。

您可能永远不需要它,但是我认为值得一提。我听说这是在Web软件中为接待员和其他办公室工作部署的,这些工作不需要很长的启动时间(而且只有第一次启动会很长)。 Facebook Ads在其“电源编辑器”中使用了此工具,该工具实际上下载了所有配置,然后在完成后重新上传所有内容。

10-06 04:36
查看更多