ruby on rails-频繁的ajax调用会杀死PC吗?我该怎么办



每隔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);

工作时,CPU会变热:那么问题是——这项工作合理吗?也就是说,哪些进程使用CPU,何时使用?

这项工作不会来自网络请求本身,因为这是一个"低CPU使用率"的IO操作,但请考虑可能导致某些工作的原因:

  1. 处理响应数据(DOM操作过多/过慢),或
  2. web服务器本身(impl.速度慢/效率低),如果运行本地,或
  3. AJAX请求可能会堆积起来——这可能会导致滚雪球效应1

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

相关内容

最新更新