限速自由文本搜索

时间:2017-08-17 12:27:30

标签: laravel laravel-5 vue.js vuejs2

我在我的应用程序的前端使用VueJS,在后端使用Laravel。使用自由文本搜索减少对服务器的调用的最佳位置在哪里?

搜索输入'hello'

@keyup将提出5个服务器请求

1st = h
2nd = he
3rd = hel
4th = hell
5th = hello

理想情况下,我希望能够在用户停止输入之前停止服务器请求,或者在按键时延迟按下。这样我每次搜索只会向服务器发送1或2个请求。

2 个答案:

答案 0 :(得分:3)

我解决这个问题的方法是将请求置于超时状态,每次按下另一个键,重置超时。
这使得只有在一段时间内没有按键时才会执行请求。

function keyPressed() {

    if (window.ajaxtimeout)
        clearTimeout(window.ajaxtimeout);

    window.ajaxtimeout = setTimeout(function () {

        // Ajax request

    }, 300);

};

此示例将在发送ajax请求之前等待击键之间的300毫秒。我发现这是一个很好的价值。

答案 1 :(得分:1)

您有多种解决方案:

  • 在用户按下按钮后使用setTimeOut()功能,例如他可以在启动服务器请求之前按下一个按钮300ms。
  • 按“Enter”
  • 启动请求