简短的回答是:......对不起,没有简短的回答。
长答案是这样的:架构决策总是涉及某种权衡。什么是适合您的应用程序的正确决定,主要取决于您的内容和系统的整体设计。
我唯一可以肯定的是:您现在所做的事情会阻止关注点的干净分离。
例如:如果您在服务器上进行搜索,您可能会在客户端不知道的情况下更改数据库中的字段名称等,因为您可以调整实际数据输出以匹配“旧”模型,即使查询完全不同。客户端将负责显示数据,服务器将负责持久化和检索它。如果您在更大的团队中开发,或者如果您的应用程序长时间运行、具有复杂的事务和/或经常更改行为(例如在企业场景中),这可能是您想要的。这些场景通常考虑到服务器的更大压力,因此需要更强大的硬件,因为硬件成本并不是大公司最紧迫的问题。
根据您的完整数据集的大小,它还会显着减少网络负载,因为您不需要将所有数据都传输到客户端,而只需将相关结果传输到客户端即可。因此,如果您的服务器的网络连接受到限制,或者您的用户的连接速度往往较慢,那么这可能是一个好主意。
另一方面:如果您在客户端应用程序中搜索和查询,按照您描述它的方式,您可以减轻数据库和 Web 服务器的负载,这并不总是一件坏事,尤其是在您的服务器容量有限且性能有限的情况下至关重要。
但除了增加整体网络流量外,这还意味着您更多地依赖客户端计算机:a)它必须足够快以处理搜索,并且 b)您总是必须(重新)部署更新的应用程序对用户来说,每次您的数据模型发生轻微变化时。这很可能是错误的主要来源,因此您必须实施某种版本检查以防止过时的客户端连接到服务器和/或禁用浏览器缓存。
所以最后,你必须权衡利弊,然后决定哪种解决方案最适合你的需求。您可能需要考虑使用像Lucene这样的专用搜索引擎作为第三种选择。