【问题标题】:serverside vs clientside autocomplete服务器端与客户端自动完成
【发布时间】:2018-06-14 01:54:28
【问题描述】:

标题多少说明了一切。

我有一个 文本字段,我想在其中进行自动完成。可以说它是电子商务解决方案所需的产品搜索字段。产品在数据库中。现在,当用户在文本字段上进行按键操作时,我可以使用 ajax 加载列表(可能使用 jquery 的自动完成功能)。我还可以在从数据库加载页面之前加载所有产品并将其作为下拉菜单传递(可能是 select2)。 我想知道哪种方法是合适的。我的情况的一些特点是:

  1. 用户将始终至少搜索 5 个产品。
  2. 产品数量可能 > 10000。

我从this place 阅读了一篇文章,其中建议我使用服务器端解决方案。不过,我想知道更多关于这个问题的意见。

【问题讨论】:

  • 在处理大型数据集时,服务器端自动完成总是更好的选择,这绝对是 10,000 个产品。
  • 1.不要在每次用户按键时调用/查询您的数据库。这会导致您的代码过于昂贵。如果您想使用 opt #1,请使用按键事件中的 setTimeout()。 2. 如果您的产品很少更改(添加新的、更新的等),您可以缓存它们并使用 opt #2。如果没有,好吧,请不要。

标签: php jquery ajax autocomplete


【解决方案1】:

这实际上取决于您为产品加载的数据;如果只是名称(并且您的名称不是很长),那么 10000 大约是我个人认为的限制,您可以预先加载它们并简化其他所有内容(除非产品列表预计会增长很多)。

另一种方法是更加注意您发出请求的方式;一些常见的最佳做法是仅在输入至少两个字符后才开始搜索,并且不在每次按键时发出请求,而是等到用户暂停几毫秒;这样,您就不会在服务器返回时收到已经无用的请求。这种技术通常称为去抖动/去抖动。当然,如果您使用具有自动完成组件的 UI 库,这可能会由该组件为您处理。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-25
    • 2019-03-18
    • 2021-09-07
    • 1970-01-01
    • 1970-01-01
    • 2011-08-07
    相关资源
    最近更新 更多