#JS #發問 setinterval刷新ajax問題

6月26日 19:46
各位大大好,近期遇到一些網頁問題,因網頁頁面需即時刷新,頁面包含多筆資料與多張Highcharts圖表,每筆資料都是要拉DB(後端使用flask),前後端串資料的部分我使用ajax,並使用setInterval每30秒更新,但是這樣連續撈取DB資料卻導致CPU使用率上升飆到100,導致網頁當掉 這是目前的ajax
想請問各位大大有什麼解決方法👏👏 麻煩各位前輩指導了,謝謝!🙇🏻‍♀️ 第一次發文,有錯誤麻煩告知,我會立即更正,謝謝!
5
回應 7
文章資訊
1 篇文章0 人追蹤
Logo
每月有 16 則貼文
共 7 則留言
國立中正大學
這個問題可能是因為memory leak造成的 可以想成這樣 每30秒都會新建一個ajax請求,但是在請求完後其實並沒有完整回收記憶體,導致記憶體佔用率越來越高,然後就當掉了 可以考慮把ajax的部分拉出來建立一個實體,setInterval內只操作這個實體去打請求,應該會改善很多 ——————— 但是單純ajax應該是不會造成太多資源的消耗,樓主可以考慮把hm3001程式碼貼上來,比較能看出問題
B1 大大你好 hm3001是畫Highcharts散點圖,主要是想定時刷新圖表的數據
國立中正大學
B2 看起來問題應該就是出在這個function 原因就是我上面說的那樣,但主要是highchart造成的 每次執行 hm3001 時都會重新建立一個 chart 儲存在瀏覽器的記憶體空間裡面,但是舊的 chart 其實並沒有被瀏覽器完全清空回收哦!導致佔用空間不斷增加 解法還是一樣,妳可以把建立好的 chart 存在變數裡(可以想成我之前提到的實體),後續更新圖表都是透過這個變數來操作 詳細使用方法可以參考 chart update
國立中正大學
上面這兩張是我參照妳的寫法稍微修改的 並且把更新時間縮短為 0.1 秒,記錄 30秒 上面那張是類似原本的寫法,每 0.1 秒就新建一個 chart,可以看到 cpu 很快拉高 下面則是我提到的方法,cpu 可以維持在低檔 希望有幫到你
B4 好的 我在嘗試一下 謝謝幫忙!!🙇‍♀️🙇‍♀️
嶺東科技大學
不考慮socket嗎?
輔仁大學
你是用highcharts的話 我記得他不是有即時更新的範例嗎