【问题标题】:Autocomplete in server side VS data transfer服务器端 VS 数据传输中的自动完成
【发布时间】:2018-11-12 09:26:55
【问题描述】:
我需要在客户端实现自动完成。数据通过服务器传输。
这可以通过多种方式完成。我想到的两个是:
-
在服务器端实现自动完成:
在这种情况下,我可以想到效率问题。调用服务器并支持每个按键是否有效?
-
数据传输:可以在第一次需要时将所有数据从服务器传输到客户端,但对于不使用自动完成功能的客户端来说似乎没有必要。再说了,一次性传完所有数据会不会很重?
我在服务器中使用 nodejs,在客户端使用 angular cli。
我很乐意听取您的意见,我也愿意听取我没有考虑过的其他选项,这些选项在这种情况下可能有效。
【问题讨论】:
标签:
javascript
node.js
autocomplete
client-server
angular-cli
【解决方案1】:
1.) 在服务器端实现自动完成肯定会有一些效率问题,尤其是当您在每个 keydown 事件上都与后端对话时。但这可以通过设置一些基本规则来改进,例如
a.) 仅当用户输入超过 2 个单词时才调用 api。如果用户输入的字数超过 20 个,您不应该查找数据。
b.) 如果您知道什么数据之王持续存在,例如只有数字(不允许用户输入任何字母)
c.) 在从数据源获取数据时始终限制数据,以确保获取有限数量的记录以进行显示。
2.) 数据传输也只有在数据量有限的情况下才有效,比如几千条记录。
a.) 如果您已经知道数据会很大,请不要尝试获取所有数据。保持您提到用户可能会或可能不会使用此功能的观点,这将是不必要的 API 调用。
b)如果数据有限,这种方法将比第一种方法更好,因为您将在客户端存储数据并且不再有不必要的服务器调用。