2013-08-18 38 views
3

我有一個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使用率的快速增長。任何想法爲什麼?

+0

除非我打開DEV-工具,我看不是CPU使用率增加,http://jsfiddle.net/YuJQ6/ – c69

+0

C69,你是對的!儘管我最初的問題是在使用Webkit的嵌入式系統上通過Qt,但在那裏沒有開發工具。我會嘗試在該系統上面的代碼,看看。 – Avner

+0

啊,在這種情況下,嵌入式webkit可能會泄漏。請記住:迄今爲止,所有這些蹩腳的嵌入式webkit都是**而非Chrome。我們在Awesomium(.NET)方面遇到了很多麻煩,最終轉換到了正常的瀏覽器(在我們的例子中 - 這是可以接受的)。 – c69

回答

2

因爲你是填充新的生產線每100毫秒控制檯輸出;)

+0

控制檯輸出用於說明更新UI時通常會發生的某些CPU活動。無論如何,它主要是爲了加快正在發生的效果。它沒有考慮到隨着時間的推移CPU使用率的增加。 – Avner

相關問題