13

メールを受信するたびにメールのリストが自動的に更新されるのは、Gmail でどのように実装されているのだろうかと思います。サーバーが何らかのイベントをブラウザに送信しているように見えますが、それはどのように可能でしょうか? それとも単純なのかもしれません: ブラウザは、2 秒ごとに新しいメッセージをサーバーに要求しますか? しかし、おそらくパフォーマンスが低下します…</p>

誰にもアイデアはありますか?

編集: OK、それが簡単な答えなら、彼らはどのようにパフォーマンスを管理していますか? 他のアカウントから gmail アカウントにメールを送信すると、ビューがほぼ瞬時に「更新」されます。true / false を返す単純な関数についておっしゃいましたが、何らかのロジック (db 接続またはいくつかのファイルの読み取り) が必要です。彼らはそれをどのように管理しますか?


参照: GMail チャットは、クライアントの操作なしで AJAX リクエストを行うにはどうすればよいですか?

4

4 に答える 4

3

実際、gmail は更新のためにサーバーをポーリングしています。ただし、2 秒ごとという頻度ではありません。それは狂気でしょう。Tamper Data で少しテストすると、おそらく 20 秒ごとのように見えますが、複数のイベントが発生しているようで、少し混乱しています。

あなたの編集に関しては、データベースのアカウント追跡に最後のアクティビティのタイムスタンプがあり、クライアントのポーリング クエリが Ajax を介してそれを取得し、最後の同期と比較して、完全な更新を行う必要があるかどうかを判断する可能性があると思います。

于 2009-06-12T17:55:08.963 に答える
2

あなたは簡単な答えで正しいです。Google Mail は、AJAX 経由でサーバー上の新しいメッセージをチェックしています。

于 2009-06-12T17:55:18.183 に答える
2

X 秒ごとに情報を取得するのは、ある種の ajax リスナーでなければなりません。

私はすでに自分のプロジェクトの1つにそのようなものを設定しています。私が行っていたのは、true または false を返す関数を呼び出すことでした。ページを更新する必要がある場合は true、それ以外の場合は false。次に、更新がある場合は、別の呼び出しを行って実際の更新を取得します。この方法では、毎回すべてを更新する必要はありません... しかし、多くのユーザーがいる場合、サーバー上では依然として負荷が高くなります。

つまり、カオスが言ったように、サーバーをポーリングしています。

于 2009-06-12T17:55:19.027 に答える