3

アートプロジェクト用の小さなWebベース(javascript)の「アプリケーション」を開発しています。これは「PoetryGenerator」と呼ばれ、ユーザーの入力に基づいてランダムな詩を生成するスクリプトです。

スクリプトは、1/10秒ごとにランダムな単語をユーザーに表示する必要があります。使用される単語リストは、109.582単語をカウントします。

私はすでにさまざまな解決策を試しました:

  1. すべての単語をテキストファイルに入れて、テキストファイルのランダムな行を取得します->遅すぎます(ユーザーは、アプリケーションを使用する前に3MBのテキストファイルをダウンロードする必要があります)
  2. Javascriptの配列にすべての単語を入れます。->javascript配列はどうやら109.585アイテムを処理できません
  3. jQueryのAjax関数とJavascript間隔関数を使用してデータベースから単語をプルします->このソリューションはローカルホストでテストするときに完全に機能しましたが、実際のWeb環境にアップロードすると、このメソッドは遅すぎることがわかりました。(そして、毎秒10個のクエリをサーバーに対して実行した場合、ホスティングプロバイダーはそれほど満足しないだろうと想像できました。)

だから..誰かが私が1/10秒ごとにウェブページにランダムな単語を表示するために使用できる別のアプローチを知っていますか?ブラウズで実行される限り、必ずしもphpやjavascriptを使用する必要はありません。

前もって感謝します

テイス

4

3 に答える 3

4

10分の1秒ごとにデータセット全体をプルする必要がある理由はありません。データベースから1分ごとに妥当な量(約600ワード)を取得し、それをローカルのjavascriptオブジェクトにロードして、繰り返し処理します。

配列インデックスが十分に高くなるか、タイマーが1分に達したら、600の別のセットをポーリングします。

10分の1秒という短い時間を処理する場合、サーバーを毎回呼び出す必要はありません。データセット全体をロードしmemcachedてランダムな単語をポーリングすることもできます。これにより、データセット全体がメモリにロードされるため、コストのかかるデータベース呼び出しをスキップできます。

于 2012-05-12T14:57:03.903 に答える
4

単語のサブセットのみをJS配列にロードしようとすることができます。たぶん、データベースから1000(ランダム)の単語だけをロードして表示しようとすることができます。

于 2012-05-12T14:57:51.703 に答える
3

めちゃくちゃ長いテキストを生成する必要がない限り、ランダム化を2つのステップにコールド分割します。

まず、サーバー側の単語のいくつかを事前に選択します(たとえば、-5000?)

次に、クライアント側で、JSを使用して、事前に選択された単語からさらにランダムに選択します。

長所:追加のリクエストは必要ありません。JSはその大きな配列を処理する必要があります

于 2012-05-12T14:58:00.657 に答える