为什么ajax轮询会随着时间的推移增加CPU使用率?

时间:2013-08-18 15:22:51

标签: javascript ajax webkit cpu-usage polling

我有一个Web应用程序每隔1秒轮询一次服务器以获取更新其显示的数据。我看到浏览器的CPU使用量从6%逐渐增加到30%,没有应用程序交互或行为改变。

在Chrome上运行此代码可轻松复制此问题,我将轮询间隔缩短为 100ms 以获得更明显的效果:

<html>
<body>
<script>
var i = 0;
var xhr = new XMLHttpRequest();
xhr.onload = function() {
    console.log("response", i++);
    setTimeout(send, 100);
}
function send() {
    xhr.open("GET", "/", true);
    xhr.send();
}
send();
</script>

此代码可以在任何Web服务器上轻松运行,例如

python -m SimpleHTTPServer 8888

使用此示例,CPU使用率增长非常快,没有明显原因。我没有处理并使用 setTimeout 而不是 setInterval ,所以我从来没有重叠请求。

我正在使用Chrome(和Safari)测试,但仍然看到CPU使用量的快速增长。有什么想法吗?

1 个答案:

答案 0 :(得分:2)

因为你每100毫秒用新行填充控制台输出;)