昨天我接受了XYZ公司的采访,他们给了我以下实时问题。
众所周知谷歌自动完成工作原理。它为你输入的每个字符发送一个AJAX调用。所以,即使我还没有完成输入,它也会向我按下的每个字符发送所有请求到服务器。 (例如,我想搜索who is the biggest fool on the internet
,然后搜索它进行AJAX调用的每个字符。
问题是" 我们如何优化这个?"
如果再次按下键,我给了他解决方案以中止先前的ajax请求。但是,采访者似乎并不相信这一点。那么请建议什么是最好的解决方案呢?
提前致谢,
答案 0 :(得分:0)
可能跟踪最后一次按键进入搜索字段,所以当一段时间过去(500ms或其他)时,则发送搜索字段的值。
答案 1 :(得分:0)
您可以通过让服务器从最后一个响应中发送增量来进行优化。例如,假设用户键入了几个字符并收到了前10个完成列表,这些列表显示给用户。现在他键入另一个字符,因此服务器计算前10个完成的新列表。该列表可能与前一个列表有一些共同的完成,还有一些新的完成。因此,我们的想法是仅计算和发送新的完成以及它们的位置,以便客户端可以更新其最高完成列表。
答案 2 :(得分:0)
没有太多可以做的,只是因为你必须使用的限制(浏览器,ajax,...)。
我能想到的唯一技巧是: