3

私たちはブラウザ ベースのソーシャル ゲームを開発しています。これはMMORPGゲームです。フロントエンド技術として html/javascript/css を使用しています (フラッシュと比較して)。ユーザーが初めてゲームをロードすると、一連のファイル (外部 js/css) がダウンロードされ、いくつかの ajax 呼び出しが要求されます。ユーザーがページを手動で更新しない限り、ページ全体が再度読み込まれることはありません。そして、現金、レベルなどのユーザー固有のデータを保存する js オブジェクトを作成します。また、ユーザーの今後の操作中に変更される可能性があります。そのため、バックエンドからデータを同期する必要があります。特別な問題は、ユーザーのデータが受動的に (他のユーザーによって) 更新される可能性があることです。これは、他のユーザーによる戦闘で発生する可能性があります。だから私の質問は、どのように、いつ同期するのですか?

1) ユーザーがタブをクリックする (html で div を表示/非表示にする) か、可能な操作 (戦う/何かを購入するなど) が行われるたびに、毎回データベースから新しいデータを取得するために ajax リクエストを呼び出します。 . 2) 1) と同様ですが、無駄なデータベース クエリを減らすために、ユーザーのデータが変更されたかどうかを示すプロキシを追加するだけです。ajax 呼び出しは、最初にプロキシに送られます。

1) 70% 以上の役に立たない ajax 呼び出しと db クエリがある可能性があります

2) 70% 以上の無駄な ajax 呼び出しが発生する可能性があります

ここでは 2) のアプローチを使用します。しかし、70% 以上の役に立たない ajax 呼び出しがまだ残っているため、これが最善の解決策だとは思いません。このユースケースに対するより良い解決策はありますか


説明

役に立たない ajax 呼び出し: 2 つの ajax 呼び出しの間隔があるため、ユーザー データはまったく変更されない可能性があります。

4

2 に答える 2

2

良い質問です。最善の解決策はserver pushを実装することだと思います。クライアントとサーバーの間に接続があるため、アイデアは単純です。サーバーはデータがいつ変更されたかを知っているため、変更についてクライアント(あなたの場合はhtml/javascript/css)に通知できます。これにより、無駄なポーリング (ajax 呼び出し) がなくなります。

ここで、これを確認するか、Google で他のAjax Pushソリューションを検索してください: http://www.icefaces.org/main/ajax-java/ajaxpush.iface

これは、アプリケーション サーバーに使用するテクノロジにも依存します。最悪の場合、独自の Ajax Push を実装する必要があります。

于 2009-12-26T14:05:34.247 に答える
0

私はここでKelに同意しますAjax-PushAKACometが最良の解決策です。私は経験から、 Persevereが優れたソリューションであり、Dojoツールキット
で最適に機能する ことをすでに知っています。また、C ++でWebサイトをコーディングできるため、パフォーマンスが重要な場合はWt を試してみることをお勧めします。それらの両方はあなたのニーズに依存する素晴らしい選択です。

于 2009-12-26T14:14:13.387 に答える