每隔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操作,但请考虑可能导致某些工作的原因:
- 处理响应数据(DOM操作过多/过慢),或
- web服务器本身(impl.速度慢/效率低),如果运行本地,或
- AJAX请求可能会堆积起来——这可能会导致滚雪球效应1
1请确保仅在收到上一次成功/失败回调后10秒发布新请求。