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. 网络服务器本身(缓慢/低效的实现),如果在本地运行,或者
  3. AJAX 请求可能会堆积起来——这会导致滚雪球效应1

1确保仅在收到上一个成功/失败回调10 秒发布新请求

于 2013-02-06T01:25:42.940 回答