2016-12-27 7 views
0

どのようにデータベースにあまりにも多くの要求の問題を解決するには?基本的にユーザーが手紙を挿入するたびに、スクリプトはajaxリクエストをデータベースに送りますが、DBリクエストを最小限に抑えるためのベストプラクティスは何ですか?私はそれが自分のアプリケーションに変更できることを考慮しなければならないので、jQueryのオートコンプリートあまりにも多くのDBリクエスト

は、私は、サードパーティのアプリからデータを取得します。

+2

jquery autocomplateのminLengthプロパティを使用できます。 – Mehmet

+0

スクロールしてみませんか?例を見てください:https://anseki.github.io/jquery-ui-autocomple-scroll/ – KingRider

答えて

1

私は数ヶ月前に同じ問題がありました。

解決方法1:
が最初に入力された文字からクエリを起動しないでください
は、私は2つの解決策を見つけました。 「minLength」オートコンプリート属性を使用します。 minLength documentation here。その属性を追加して、最初のクエリは、Nが以前に入力した文字の数(整数)であるNで開始します。
例:

$(".selector").autocomplete({ 
    minLength: 3 
}); 

解決方法2:
は倍数が送信間の遅延(非常に短いが、データベースのための素晴らしい)を追加します。 250/300/500msのような短いもの(あなたとデータベースの間にpingを置いているか、ユーザーの帯域幅に依存しているか)は本当に分かりやすいです。 Delay documentation link here。値はミリ秒(整数)です。
例:

$(".selector").autocomplete({ 
    delay: 500 
}); 

私はそれはあなたのニーズにマッチします願っています。
2人の両方を使用するのをためらってください。

1

あなたは要求を絞るか、デバウンスすることができます。これらの関数は、Lodash(https://lodash.com/docs/4.17.2#debounce)のようなライブラリに含まれることがよくあります。

デバウンス:キーを押すと、タイマーが開始されます。タイマーが終了すると、Ajax呼び出しが行われます。タイマーの間に別のキーが押されると、タイマーはリセットされます。

スロットル:キーを押すと、Ajaxの呼び出しが行われると、タイマーが起動します。タイマーの実行中に別のキーが押されると、そのキーは無視されます。

+0

問題に関連する新しい概念を教えるための+1。あなたの答えを受け入れることはできません。あなたと@Aethynの回答は私にとって役に立ちました。 – user3748173

関連する問題