ユーザーがオンとオフを切り替えることができる「いいね」ボタンを使用して、ページに投稿のリストを表示します。サーバーとのトラフィックを抑えるために、次のことを行います。
- 同じリクエストで同様のステータスが一度に変更されたすべての投稿の更新を送信します
- 変更された投稿の更新のみを送信する
- 同様のステータスをN秒ごとに更新し、ページ終了時のみ更新します。ユーザーが「いいね」ボタンを切り替えるたびにではありません。
これはangularjsで可能ですか?
ユーザーがオンとオフを切り替えることができる「いいね」ボタンを使用して、ページに投稿のリストを表示します。サーバーとのトラフィックを抑えるために、次のことを行います。
これはangularjsで可能ですか?
ここで見ることができる例を書きました:
http://plnkr.co/edit/imMGTJ75mKJZT7ispD9E?p=preview
コメントを付けたり、実行時にページ自体に表示される有用な情報を提供したりして、しばらく時間を費やしました。メッセージの移動が速すぎる場合に実行速度を遅くしたい場合は、遅延を変更します。
あなたの質問から、ユーザーが特定の投稿に変更を加えたときに保存したいようです。x 秒ごとに変更をチェックすることを提案しましたが、これは理想的ではありません (ただし、 で実装するのは簡単setInterval
です)。ページの終了時に変更を保存することについても言及しましたが、ページの終了時に何かが起こることを保証することは不可能です (たとえば、ユーザーが電力を失うなど)。
上記を回避するには、ユーザーが「いいね」ボタンをクリックしたときに ajax 呼び出しを起動しますが、最初のクリック後にそれらをスロットルし、スロットル タイマーの実行中に変更を保存し、タイマーが終了した後にすべての変更を一度にプッシュします。
私の plunker コードの簡単な説明は次のとおりです。
ユーザーが投稿を「いいね」または「いいね!」すると、投稿の新しい情報を使用してサーバーに Ajax 呼び出しが行われます。この時点で、新しい「好き」/「嫌い」は、更新が必要な投稿の「キュー」に投入されます。
最初の Ajax 呼び出しが成功すると、スロットル タイマーが開始します。私が提供した例では、5 秒です。投稿への変更 (「いいね」、「いいね! の取り消し」) は、同じ「キュー」にスローされます。
5 秒経過すると、「キュー」がチェックされます。空の場合、アクションは実行されません。アイテムが含まれている場合 (変更された投稿など)、2 回目の ajax 呼び出しを行い、サーバー上の投稿を更新します。
私の例は、あなたが取り組んでいるものを正確に反映するものではありませんが、重要なのはコンセプトです。コードを変更して、長時間スロットルしないようにしたり、一定時間内に x 回の ajax 呼び出し後にのみスロットルするようにしたりすることができます。