2017-12-07 1 views
-1

私は1ページのアプリケーションを構築しています。 このアプリケーションには、MongoDBデータベースに格納されている7000個のポートのリストがあります。 検索でオートコンプリートのあるポートを検索できるようにする必要があります。私はAjaxを使うべきですか、またはコレクション全体を変数に格納する必要がありますか?

オートコンプリートの結果をAjaxにする必要がありますか?

OR

私はこの配列に私のオートコンプリートプラグ、変数に格納し、ポートの全体のコレクションを取得する必要がありますか?

ベストプラクティスは何ですか? 最も賢明なパフォーマンスは何ですか?

+1

は7000の修正ですか、リストが大きくなることはありますか? – Crappy

+1

最良の方法は、オートコンプリートフィールド内のすべての検索に対してデータベース接続を避けることです。 –

+0

@Crappy:実際に成長することができます、gootポイント –

答えて

0

ベストプラクティスと賢いパフォーマンスが賢明です:

  1. たとえば、APIリソースに検索文字列を送信します

    /autocomplete?search=portname1 
    
  2. は、オートコンプリートの結果を取得し、それらに

  3. を視覚化あなたはオートコンプリートにexisting JS librariesを使用できます(お湯の発見を避けてください)
1

あなたはリストが成長すると言いましたので、私はあなたのアプリにリスト全体を読み込まないでしょう。リストが大きすぎるとパフォーマンスが低下する可能性があります。

私はこの方法でこの問題を解決するだろう:

  1. 検索条件に一致トップ10〜20の結果を言うことができますどの返し、あなたのWebサービスのルートを確認します。
  2. 入力時にエンドポイントにGET要求を送信します。
  3. パフォーマンスを向上させるには、メモリ内のデータベース(Redisなど)にキャッシュすると、すべての要求に対してデータベースアクセスが遅くなることがありません。
+0

ありがとうございます。 私は何をすべきかを完全に得ています。 しかし、リストが修正されていれば、それを変数に保存してオートコンプリート候補を取得するのに使用できますか? –

+1

リストが修正された場合はオプションになりますが、パフォーマンスがどのように影響を受けるかをテストする必要があります。私はどのように7000エントリのリストが動作するかわかりません。また、多くのコンピューティングパワーを持っていないモバイルデバイスについて考えてみてください。 – Crappy

+0

私は完全に同意しますが、私はいくつかの外部意見を確実にしたいと思いました。 AJAXです!再度、感謝します –

関連する問題