1

10秒ごとにこのajaxを呼び出して受信メール数をリロードします。
しかし、私の MacBook は、アプリケーションで同じページにとどまっているだけで、時間が経つにつれて熱くなっているようです。

この種の取引はどのように処理すればよいですか?

refresh_mail_count.js

jQuery(document).ready(function () {
    refreshMail();
});


function refreshMail() {
  $.ajax({
    url: "/messages/refresh_mail",
    type: "GET",
    dataType: "script",
  });
}

refresh_mail.js.erb

$('#message_count').html("<%= j(render(:partial => 'layouts/message_received_count', :object => @message_count)) %>");
setTimeout(refreshMail,10000);
4

1 に答える 1

1

CPU は動作すると熱くなります問題は、この作業が正当化されるかどうかです。つまり、どのプロセスが CPU をいつ使用するのか?

これは「CPU 使用率が低い」IO 操作であるため、この作業はネットワーク リクエスト自体から発生するものではありませんが、何らかの作業が発生する可能性があることを考慮してください。

  1. 応答データの処理(過度/遅い DOM 操作)、または
  2. ローカルで実行している場合は、Webサーバー自体(遅い/非効率的な実装)、または
  3. AJAX リクエストが積み重なっている可能性があります - これは雪だるま式効果につながる可能性があります1 !

1前回の成功/失敗のコールバックを受信して​​から 10 秒に、新しいリクエストのみを投稿するようにしてください。

于 2013-02-06T01:25:42.940 に答える