AJAX ポーリング頻度 - ロングポーリングするか、ロングポーリングしないか?

StackOverflow https://stackoverflow.com/questions/3842063

質問

比較的一定のデータベース ポーリングを必要とする Web ページのコンポーネントを構築しています。これには 2 つの異なるアプローチが考えられますが、そのうちの 1 つが他のものより優れているのか、それとも 3 番目のオプションが欠けているのか疑問に思っています。

1) 1 ~ 2 秒ごとに AJAX リクエストを送信して、更新を確認します。新しいデータがあるかどうかに関係なく、各リクエストはすぐに返されます。
2) データを受信するかタイムアウトが発生するまで返されない単一の AJAX リクエストを発行します。これらのいずれかが発生すると、次のリクエストが起動されます。(これをロングポーリングと呼ぶのでしょうか?)

データベース クエリの数はどちらでも同じですが、#2 ではブラウザから発行されるリクエストが少なくなり、帯域幅とクライアント リソースを節約できます。サーバーにとって、アクティブなままでクエリ間でスリープする単一の PHP リクエストを持つ方が良いでしょうか。それとも、数秒ごとに起動して DB をポーリングしてからシャットダウンするのとどちらが良いでしょうか?それとも違いはなく、私がこれについて強調しすぎているのでしょうか?

編集:これは、より大きな Web アプリのチャット ウィジェットであるとも述べるべきだと思います。チャットは二次的な機能であるため、コミュニケーションがわずかに遅れてもユーザーが死亡することはありません。

役に立ちましたか?

解決

はるかに良好な応答時間を与えながらロングポーリングは、ポーリングよりも(すなわち、より少ないサーバ負荷)より良好なスケールであろう。

あなたの受信者にポーリングした場合、メッセージの平均所要時間が半分あなたのポーリング間隔になります。

ロングポーリングして、その瞬間 - 何も言うことがない場合、サーバーは待機

。 あなたがチャットメッセージングを行っている場合は、

、長いポールを行きます。その使いやすさの事ます。

長いポーリングと下側は、より実装する複雑さです。しかし、そのはるかに複雑、かつそれが広く実装されていないこと。あなたは選択のあなたのウェブサーバのための既製のフレームワークを使用することができないのであれば、あなたは合理的に1を書くことについて設定することができますし、作業それを取得します。

他のヒント

も見ることができます ウェブソケット, 、最新のブラウザの一部 (または、 フラッシュファイル あなたはあなたのページにドロップします)

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top