[Javascript]自动补完框的小探究

之前和同事做项目的时候,有一个拉取好友的框,可以在输入框中输入字符来过滤好友。过滤的功能我在后端完成了,告诉前端说,你去ajax带个参数去拉json数据就ok。过了一会儿,前段同学跟我说他对那个框做了onkeydown的检测blabla。我问他直接onchange的时候把框内容ajax过去不就行了么。于是林哥跟我说不行,这样请求太频繁。

在我的印象里面,百度和谷歌的自动补完都是很快速的,不像是有间隔啊。于是我看了一下它们的post

咦怎么发成相册了,好吧相册就相册

百度的post“几乎”是变化就发送,尤其在中文情况下,输入速度远赶不上请求速度。请求大概100ms就返回了,也就是输入速度要达到600字/min才能赶上发送速度。

对中文虽然不可能,但是英文还是有戏的。输入英文的时候,并不是每输入一个字母就request,有一个小延迟,以我的打字速度,最多没超过3个字母就request了。不得不说服务器真给力

Google有些不同,首先是请求频率低一些,同样的英文,大概4、5个字母request一次。速度慢一些,因为众所周知的原因,木有办法呀。

而且Google的request是可以cancel的,新的request会导致以前的request被cancel掉,(大概减轻了压力)

至于百度为啥没这么做呢,我猜,百度来不及cancel就已经request ok了………………

PS.排版神马的,等我有空研究下吧

PPS.@AsterOcclu有木有什么好的展示照片的插件,我之前好想看你blog上有

PPPS.推荐下http://water7.tk

PPPPS.在google测试补完的时候,我是用“啊啊啊”测试的……结果呢……

2 thoughts on “[Javascript]自动补完框的小探究

  1. 你可以顺便看看Google的即时搜索,它在不同浏览器上有不同的反映。我觉得Ajax对于浏览器还是十分复杂的,有时请求过多数据量真的会卡,而自动填补似乎只是在次数上多,而不会有太大压力。至于,服务器因为确实会有cancel所以压力也不应该太大……话说google在北京的机房还没撤呢,速度和百度应该一样的。展示图片的插件有,但是需要调教……

发表评论

电子邮件地址不会被公开。 必填项已用*标注