サイト内メッセージ/メッセージ機能を備えた小規模なプッシュ アプリケーションの場合、ポーリングとロング ポーリングを使用する必要がありますか?
最近、この小さなアプリケーションを作りたくて、たくさんの情報をチェックしました。現在、主にサーバーの負荷の問題により、どちらを使用するか迷っています。私を知っている人がアドバイスをくれることを願っています。
1) ajax が 3 秒間のポーリングを実行すると、無効なリクエストが多数発生し、サーバーが前のリクエストに応答しないまま次のリクエストが到着すると、サーバーは間違いなく問題を抱えます。
2) ロングポーリングを行う場合、1 人のユーザーが 1 つの接続を持つことになり、サーバーは非常に多くの接続を同時に保持する必要があり、非常に膨大になります。
具体的なアーキテクチャがわかりません。とにかく、特定のサーバー負荷を分析する方法がわからないため、この 2 つの方法は非常に混乱します。
もう 1 つ: サーバーは Shanda 中規模クラウド ホストであり、この小さなアプリケーションには即時性に対する高い要件はありません。
-----解決策---------
サイト内メッセージもプッシュして比較する まれに、ユーザーがページに長時間滞在しないことがあります。そのような必要がある場合は、ユーザーが更新操作を行うたびに memcache を追加する必要があります。
さらに、サイト内メッセージのグループ送信機能を考慮する必要があります。現時点では、ユーザーがログインするときに挿入して完了する必要があるレコードは 1 つだけです。また、コンテンツを別のテーブルに分割します。
------解決策------------------
関係番号 送信者 受信者 メッセージ番号 ステータス
1 ID1 ID2 3 既読/未読
これは、メッセージ テーブルとユーザー テーブルに加えて、関係テーブルです。
サイト内メッセージは通常、未読メッセージの数です。 [カウント] を選択すると、AJAX によってデータベースに与えられるクエリの負荷を許容範囲内で減らすことができます。 make a キャッシュは未読アイテムの数を 120 秒間保存し、20 秒後に取り出して完了です。