PHP-实时查询或者自动完成中如何优化请求发送频率?
在实时查询或者自动完成功能中,一般的处理是,用户每输入一个字符,就像后台发起一次请求。
比如搜索dewen这个文字,就得发送5次请求,但是其实前4次请求都是没有必要的。
请问如何优化这种方式?
好像有文章说quora中是由后台来控制,如果像quora那样由后台来控制,又该如何来做使得不会增加服务器端的负载?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
不清楚quora的方案,给出我的一个思路:
每次输入完成(比如keyup之后),使用setTimeOut发起一个延迟的ajax调用,如果在短时间内(比如2s)又有新的输入(keyup),就删掉原有的setTimeOut,重置请求。
这样就不会因为连续的输入发起多次无用的请求了。
一般情况下会在后台来做优化,比如在很短的时间内,连续收到一个用户2个请求,就丢弃前一个请求不处理,直接处理后一个请求并返回。
另外,如果用户行为相似且比较集中,在后台保存请求结果也是提高效率的一种方法。