我有一个 Web 应用程序每 1 秒轮询一次服务器以获取数据以更新其显示。我看到浏览器的 CPU 使用率逐渐(一夜之间)从 6% 增加到 30%,而没有应用程序交互或行为改变。
这个问题很容易通过在 Chrome 上运行的代码重现,我将轮询间隔减少到100 毫秒以获得更明显的效果:
<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 使用率快速增加。任何想法为什么?