web-dev-qa-db-ja.com

setintervalを使用してajaxリクエストを送信します。いいですか?

私は、通知が作成されたらすぐに通知が届くようにクライアントが必要とするWebサイトを開発しています。だから私はjqueryのsetinterval関数を使用しており、通知を取得するためにajaxリクエストを使用しています。設定した時間間隔は2秒です。そして、それはこのように進んでいる唯一のajaxリクエストではありません。 2秒以内に次のajaxリクエストが行われています

  1. 通知を受け取る
  2. メッセージを取得します。
  3. カウントを取得します。
  4. 他のいくつかのチェック

これだけ多くのリクエストを非常に短い時間で送信すると、システムが妨害されるのではないかと心配しています。ユーザー数が増えるとさらに悪化します。これが間違ったアプローチである場合、これに対するあなたの意見と解決策を教えてください

1
Prabhjot Singh

可能であればWebソケットに移行することをお勧めしますが、それまでは、考慮すべき点がいくつかあります。

  1. 要求数と応答時間に関する統計を収集していることを確認してください。これは最適な状況ではありませんが、リクエストごとに2秒の呼び出しが追加される単純なJavaScriptエラー、単一のハングしたリクエスト、またはDDOS攻撃から、悪夢に変わる可能性があります。
  2. @Traubenfuchsのアドバイスは確かです。 setTimeoutを使用し、応答を受け取った場合にのみ呼び出しをスケジュールします。
  3. 差し迫った理由がない限り、データストアが過負荷にならないように、結果をサーバー側で短期間キャッシュしてください。
  4. すべての呼び出しを1つの呼び出しに結合することが可能です。
1
backpackcoder