-1

チャットボックスとアイテムのリストが表示されるインタラクティブなページを作成しています。

JQUERY の .post() 関数を使用して両方とも 30 秒ごとに更新するつもりですが、多くのユーザーが Web ページを 24 時間タブで開いたままにしており、サーバーに大きな負荷がかかっていることに気付きました。

これを防ぎ、リソースを最適化するために、ユーザーがページでアクティブな場合にのみ、データベースのポーリングを 30 秒ごとに実行したいと考えています。受動的なケースでは、5 分間のポーリングを希望します。

どうすればこれを達成できますか?(私はPHPとMYSQLを使用しています)

4

2 に答える 2

0

おそらく、 onScrollイベントに基づく関数を作成できますか? しかし、それはあなたの「アクティブ」の定義に依存すると思います。

于 2013-05-21T17:26:17.160 に答える
0

カーソル位置の変化を検出してみてください。

  1. ページの読み込み時に setInterval メソッドを開始して、リクエストを PHP に送信します
  2. ユーザーカーソルが移動しているかどうかを確認する setInterval を追加します。
  3. そうでない場合は、しばらく待ってから 1 インターバルをクリアします。
  4. はいの場合、許可間隔は正常に機能します。

ユーザーが他のタブに移動した場合、カーソル位置チェック方法がどのように機能するかわかりません。私はあなたのためにテストを準備します(jsのみ)

編集:

W3C は実際にpage visibilityドキュメント属性として作業を開始します: http://www.w3.org/TR/page-visibility/

しかし、今のところはより良い解決策です。この回答を見てください: https://stackoverflow.com/a/1060034/390747

于 2013-05-21T17:42:26.753 に答える