我有一个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使用量的快速增长。有什么想法吗?
答案 0 :(得分:2)
因为你每100毫秒用新行填充控制台输出;)