0

手元に大きな配列があります(2300要素、合計280 KB、最短形式で180 KB)。ページやサーバーをあまりロードせずに、PHPまたはJavaScriptで処理する必要があります。ページにオートコンプリートフィールドがあり、ユーザーが文字を入力するたびに180 KBページにリクエストを送信したくありません(私には非常に非効率的であるように思われるため)。すべてを元のページに保存したくないので、ページの速度が低下します(そうではありませんか?)。

私はそれをクッキーに押し込もうとしましたが、クッキーにはそのような巨大な配列の余地がないようです。助言がありますか?おそらく、データベース内で検索する方が良い解決策であり、代わりにデータベースに保存する必要がありますか?

4

3 に答える 3

1

1つだけロードするリストでオートコンプリートしたいですか?これをJavaScriptファイルに保存し、適切なキャッシュヘッダーを設定して、クライアントがリストを1回だけロードするようにします。

それをクッキーとして設定しないでください、それは単にナンセンスです。

于 2012-07-06T08:55:00.267 に答える
1

ページの読み込み時間に懸念がある場合は、Ajaxを介してサーバーに入力を送信し、サーバー側の応答を待つのが実際には最善だと思います+配列が時々変更される場合...

一方、配列をJSON形式でサーバー上のファイルに保存し、Ajaxを介してJavaScript内で発行することもできます。そうすれば、ユーザーは配列を一度ダウンロードする必要があり、後でブラウザーのキャッシュを利用して高速化できます。 。

例えば。

$.get("array.txt",function(array){

   var myArray = eval(array);
   //Now DO WHat YOu WAnt with the Array now Housed in the variable 'myArray'

});

これは単なる例であり、jQueryを使用する必要はありません。

ノート:-

2番目の方法を使用する場合...ユーザーが現在のセッションでサイトに初めてアクセスしたときにユーザーがロードされるのを待つように、ある種のバッファーメカニズムを追加するのが最善です。これは、ユーザーが最初の試行で期待するものを取得するためです。そうしないと、提案やアレイでやりたいことが何も表示されない可能性があり、イライラして最終的に離れてしまいます。

PHPを使用している場合は、正しいキャッシュヘッダーを設定する必要があります。通常、一度アップロードして変更しないtxtファイルは、ほとんどの最新ブラウザのキャッシュに自動的に送信されます。

于 2012-07-06T09:01:09.167 に答える
0

オートコンプリートフィールドにデータベースを使用することは、確かに古典的な解決策です。PHP / mysql/jqueryのオートコンプリートチュートリアルを見つけるのは難しいことではないと思います。

それは非常にうまく機能します。

完全なリストをクライアントに送信しないでください。これは役に立たず、値の数が増えてもこのソリューションは拡張できません。

于 2012-07-06T08:55:58.983 に答える