2

さて、私はリアルタイムアプリケーション(データベースが追加されるとすぐにデータベースから新しいデータを取得するもの)に似たものを構築しようとしていましたが、私が思いついた唯一の解決策は、常にajaxリクエストを使用することでした(setInterval()を介して) javascriptのメソッド)数秒ごとに新しい情報をチェックしますが、これがデータベースまたはサーバーにどのような負担をかけるのか興味がありました。

そのようなことをするのはやり過ぎでしょうか、それともリアルタイムアプリケーションを構築するためのより良い方法がありますか?

4

3 に答える 3

3

あなたの問題は、2 つのオプション、long pollingまたはに要約されますshort polling。最初のオプションでは、AJAXリクエストがサーバーに送信されます。サーバーは新しい更新を検索します。見つかった場合は、すぐにそれを返します。それ以外の場合は、たとえば 0.5 秒間スリープし、その後再び更新を検索します。これは所定の時間続き、その後、データ配列にあるものは何でも送信されます。応答を受信すると、JS は適切な応答を取得し (データがある場合、おそらくそれを使用して を操作しますDOM)、別の要求を送信できます。これは無限に続きます。これには、サーバー側でかなりのリソースを消費するという欠点があります。しかし、(Facebook のように) 新しい更新をすぐに反映させたい場合は、これが最善の策かもしれません。

2番目のオプションでは、おっしゃったように、サーバー側の負荷は問題なく軽減されます。ただし、更新の反映にかかる時間はそれ以上になる場合があります。さらに、ユーザーのインターネット速度が遅いと、遅延が大きくなります。言うまでもなく、ユーザーの帯域幅を無駄にする要求が繰り返されることは言うまでもありません (ただし、最小限のデータのみが送信されるようにサイトを設計すれば軽減できます)。Websockets API は便利かもしれませんが、私の知る限り、最新バージョンを除くすべてのブラウザーで完全にサポートされているわけではありません。

于 2012-09-13T17:17:54.357 に答える
0

アプリケーションにHTML5を使用できる場合は、Webソケットをお勧めします。

http://www.websocket.org

于 2012-09-13T17:10:02.150 に答える
0

A better approach is to use web sockets or similar.

See, for example, Ratchet.

于 2012-09-13T17:10:22.553 に答える