0

ペニー オークション サイトでは、時間の経過とともに発生するいくつかの基本的な要求があります。

  • 入札依頼(入札時)
  • タイマーの更新
  • 主要な入札者の更新

私は長いポーリングをもう少しよく理解しようとしていますが、これで立ち往生しています。私の知る限り、ロングポーリングはAjaxリクエストを減らすためにあります。つまり、ビジュアル更新用に 1 つ、アクション用に 1 つだけにすることで。したがって、次のようになります。

  1. 入札リクエスト (入札を行う) はそのまま残りますが、すべてのビジュアル更新リクエストは 1 つの「ロング ポール」リクエストにまとめられますよね?
  2. ユーザーが初めてサイトに接続する場合、ユーザーは、ページの状態について最後に通知された内容も渡すことによって、ページの現在の状態を要求します。サーバーはそれをあるべき状態と比較し、それらが異なる場合は、新しい状態をユーザーに返しますよね?
  3. 状態を戻すと、LONG POLL は効果的に停止し、画面が更新され、新しい LONG POLL が開始されますよね?

この理解は今のところ正しいですか?

もしそうなら、サーバーがまだ状態を比較する必要がある場合、バックエンドへのリクエストの数をどのように減らすことができますか?

1 人のユーザーが 50 の異なるウィンドウでページを開いた場合、これはどのように役立ちますか?

4

1 に答える 1

1

ロング ポーリングは、サーバーがデータをクライアントにプッシュする接続をシミュレートするために使用されます (実際に起こっていることではなく、クライアントがサーバーからの情報を要求しています)。基本的に、クライアントはサーバーからデータを要求しますが、データをすぐにクライアントに返すのではなく、サーバーは要求を開いた状態で「保留」します。その後、後でクライアントにデータを返すことができます。これは、サーバーの更新をシミュレートするために使用できます。 「リアルタイム」でクライアント。

したがって、オークション サイトの例では、クライアントはアイテムの入札額についてサーバーをロング ポーリングする可能性があります。サーバーはこのリクエストを開いたままにし、そのアイテムの入札値が変更されると、更新された金額をクライアントに返すことができます。入札額の変化に応じてサーバーがクライアントを更新している印象を与えるために使用できます。

サーバーへのリクエストに関する限り、これはこれがどのように実装されているかに大きく依存します。明らかに、長いポーリングを使用すると、更新を確認するために毎秒新しい「標準」リクエストをクライアントに発行させる場合と比較して、サーバーへのリクエスト数が減少します。クライアントの複数のインスタンスは、依然としてサーバーへの複数の要求をもたらします。さらに、サーバーは、長いポーリング要求を開いたままにし、適切な場合にこれらに応答するというオーバーヘッドに対処する必要があります。これにより、他のものよりも効果的です。

于 2013-02-08T11:40:29.007 に答える