我有一个Web应用程序每1秒轮询一次服务器的数据以更新其显示。我发现浏览器的CPU使用率从6%增加到30%,并且没有应用程序交互或行为改变。为什么ajax轮询会随着时间的推移增加CPU使用率?
的问题很容易与浏览器,在那里我轮询间隔减少到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使用率的快速增长。任何想法为什么?
除非我打开DEV-工具,我看不是CPU使用率增加,http://jsfiddle.net/YuJQ6/ – c69
C69,你是对的!尽管我最初的问题是在使用Webkit的嵌入式系统上通过Qt,但在那里没有开发工具。我会尝试在该系统上面的代码,看看。 – Avner
啊,在这种情况下,嵌入式webkit可能会泄漏。请记住:迄今为止,所有这些蹩脚的嵌入式webkit都是**而非Chrome。我们在Awesomium(.NET)方面遇到了很多麻烦,最终转换到了正常的浏览器(在我们的例子中 - 这是可以接受的)。 – c69