关于搜索框AutoComplete

yaotomo 2017-04-23 02:47:12
像百度搜索框自动完成的功能是怎么实现的,每次输入一个字就触发事件去数据库查询一次?这样不影响性能吗?


...全文
312 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
正怒月神 版主 2017-04-28
  • 打赏
  • 举报
回复
引用 13 楼 yaotomo 的回复:
谢谢版主,这个缓存或者云又是什么原理实现的呢 缓存是指将数据库中的数据都缓存在服务器上,客户端不直接访问数据库而是从缓存中读取?像大型的网站就使用分布式缓存?我是自己的理解,不知道对不对。
理解的没问题。 不过对于客户端来说,他并不知道访问的是数据库还是缓存。而是服务器端通过逻辑实现客户端的请求,决定去访问数据库还是缓存。
yaotomo 2017-04-28
  • 打赏
  • 举报
回复
引用 11 楼 hanjun0612 的回复:
不是查询数据库这么简单。 可能通过缓存或者云之类的实现。
谢谢版主,这个缓存或者云又是什么原理实现的呢 缓存是指将数据库中的数据都缓存在服务器上,客户端不直接访问数据库而是从缓存中读取?像大型的网站就使用分布式缓存?我是自己的理解,不知道对不对。
yaotomo 2017-04-28
  • 打赏
  • 举报
回复
引用 9 楼 sp1234 的回复:
按照规则来设计开发就好了,按照规则按部就班地设计开发,重构时许多东西都是水到渠成的事情,到时候一下子就明白了。虽然对许多人来说在别的地方找不到免费代码、于是在论坛上找,但是论坛其实是程序设计师的论坛,不是项目网站。
谢谢前辈,可是这个服务又如何开发呢,还是调用第三方提供的服务,服务里面难道不需要从数据库获取数据吗,还是像楼上说的那样从缓存中获取 我也想找一个服务直接调用就行了,可是怎么做真是一头雾水啊
zbdzjx 2017-04-28
  • 打赏
  • 举报
回复
如果是公司内部网使用,网络够快,数据量不大,每次输入一个字就触发事件去数据库查询一次也没什么问题。
SinGooCMS 2017-04-28
  • 打赏
  • 举报
回复
我把产品名字存储到一个pro.js,然后查找这个js就可以了
全栈极简 2017-04-28
  • 打赏
  • 举报
回复
查缓存、数据库都可以,它们都是作为数据源提供查询服务。autocomplete插件可以设置延迟,即当输入字符多长时间后再触发后台事件。 http://www.cnblogs.com/guwei4037/p/4720195.html
正怒月神 版主 2017-04-25
  • 打赏
  • 举报
回复
不是查询数据库这么简单。 可能通过缓存或者云之类的实现。
sdfgrtyu 2017-04-25
  • 打赏
  • 举报
回复
建立一个catch就可以了吧,或者用框架
zhanglong_longlong 2017-04-24
  • 打赏
  • 举报
回复
肯定不是查数据库啊,你想啊,每输入一个字都要去查询数据库,这效率多低,肯定是用缓存或者elasticsearch来做这些东西啊
  • 打赏
  • 举报
回复
按照规则来设计开发就好了,按照规则按部就班地设计开发,重构时许多东西都是水到渠成的事情,到时候一下子就明白了。虽然对许多人来说在别的地方找不到免费代码、于是在论坛上找,但是论坛其实是程序设计师的论坛,不是项目网站。
  • 打赏
  • 举报
回复
引用 5 楼 yaotomo 的回复:
谢谢您的提示。请问我要做一个公司内部的系统,也想实现这样的功能,该怎么办呢。我不想每输入一次都查询数据库,那样用户体验太差了。
一个公司的产品,分为两层,一层是前端界面,另一层是服务层。至于说数据库,跟前端界面完全无关。 所以你应该设计提供数据服务,给各种前端程序使用。达到这个程度,再来说是否要访问数据库的问题。在一开始,自然要实现数据时会去一遍遍地访问数据库的,但是数据库跟前端已经三层分开,所以后端可以不断重构、不断修改后台体系结构。 但是在你还没有架构知识时,首先要从开发一个数据服务入手。不要纠结表皮和最底层,要学会中间的骨架。
yaotomo 2017-04-24
  • 打赏
  • 举报
回复
引用 4 楼 zhanglong_longlong 的回复:
肯定不是查数据库啊,你想啊,每输入一个字都要去查询数据库,这效率多低,肯定是用缓存或者elasticsearch来做这些东西啊
能不能具体讲一下呢,谢谢
yaotomo 2017-04-24
  • 打赏
  • 举报
回复
引用 3 楼 poetgao 的回复:
哈哈,我也正在做这个。 今天刚找到一个叫做Select2的,你可以去看看。 最近也在了解“大数据”时代下的分布式数据库,应对的就是这种频繁读取、较少修改的情况。 下面一篇文章可以让你了解一下非关系型数据库MongoDB。 http://www.cnblogs.com/mokafamily/p/4076954.html
以前学node的时候也了解过一些mongodb 但是mongodb一般用在并发性比较大的场合,我是做的内部系统,没多少人用呢
yaotomo 2017-04-24
  • 打赏
  • 举报
回复
引用 2 楼 sp1234 的回复:
此外,所谓的“去数据库查一次”其实都是自己猜测的说法。你并不知道百度有什么数据库、有没有数据库、有几个数据库、有多少层分布数据库。实际上每当输入事件被响应,确实要去访问百度的服务。 仅此而已,真正的是要去访问百度的查询服务,而不是数据库。
谢谢您的提示。请问我要做一个公司内部的系统,也想实现这样的功能,该怎么办呢。我不想每输入一次都查询数据库,那样用户体验太差了。
poetgao 2017-04-23
  • 打赏
  • 举报
回复
哈哈,我也正在做这个。 今天刚找到一个叫做Select2的,你可以去看看。 最近也在了解“大数据”时代下的分布式数据库,应对的就是这种频繁读取、较少修改的情况。 下面一篇文章可以让你了解一下非关系型数据库MongoDB。 http://www.cnblogs.com/mokafamily/p/4076954.html
  • 打赏
  • 举报
回复
此外,所谓的“去数据库查一次”其实都是自己猜测的说法。你并不知道百度有什么数据库、有没有数据库、有几个数据库、有多少层分布数据库。实际上每当输入事件被响应,确实要去访问百度的服务。 仅此而已,真正的是要去访问百度的查询服务,而不是数据库。
  • 打赏
  • 举报
回复
它应该是有故意的延迟的,例如400毫秒,并不是立刻产生事件响应。

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧