我有一個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