あなたの問題は、2 つのオプション、long polling
またはに要約されますshort polling
。最初のオプションでは、AJAX
リクエストがサーバーに送信されます。サーバーは新しい更新を検索します。見つかった場合は、すぐにそれを返します。それ以外の場合は、たとえば 0.5 秒間スリープし、その後再び更新を検索します。これは所定の時間続き、その後、データ配列にあるものは何でも送信されます。応答を受信すると、JS は適切な応答を取得し (データがある場合は、おそらくそれを使用して を操作しますDOM
)、別の要求を送信できます。これは無限に続きます。これには、サーバー側でかなりのリソースを消費するという欠点があります。しかし、(Facebook のように) 新しい更新をすぐに反映させたい場合は、これが最善の策かもしれません。
2番目のオプションでは、おっしゃったように、サーバー側の負荷は問題なく軽減されます。ただし、更新の反映にかかる時間はそれ以上になる場合があります。さらに、ユーザーのインターネット速度が遅いと、遅延が大きくなります。言うまでもなく、ユーザーの帯域幅を無駄にする要求が繰り返されることは言うまでもありません (ただし、最小限のデータのみが送信されるようにサイトを設計すれば軽減できます)。Websockets API は便利かもしれませんが、私の知る限り、最新バージョンを除くすべてのブラウザーで完全にサポートされているわけではありません。