2017-09-11 53 views
0

我有以下jQuery代碼,用於獲取我每秒生成的html頁面。一段時間後,它會導致內存不足錯誤。怎麼修?JQuery刷新頁面導致瀏覽器內存不足

$(document).ready(function() { 
     setInterval(function() { 
      $.get('some_page.html', function (data) { 
       $('#some_div').html(data); 
      }); 
     }, 1000); 
    }); 
+0

爲什麼不刷新頁面而不是'每秒鐘'加上每秒加一點點,爲什麼不每10次刷新一次呢? – Deckerz

+0

因爲在瀏覽器和服務器上每秒都會產生一次AJAX調用,這將非常繁重。 –

+0

在瀏覽器開發工具的「網絡」選項卡中檢查此項。在上一個事件完成之前,最有可能發生的新請求正在觸發,並在一段時間後導致內存和帶寬問題。在再次調用之前,您應該確保先前的請求已完成 –

回答

0

如果發生的事情是在上一個事件完成之前正在觸發新的請求,請在再次調用之前確保先前的請求已完成。我沒有真正測試下面的代碼,但它應該指向正確的方向。使用setTimeout和遞歸來代替setInterval。很顯然,如果由於某些原因需要它們,這個解決方案並不會給你一秒的時間間隔(更像是一秒鐘,加上請求週期是根據用戶的網絡條件),但我認爲你只需要面對節奏的刷新和嚴格時機並不重要。

儘管如此,我仍然在第二點評論,即1秒的http請求間隔對瀏覽器和服務器都是冒險的和有點濫用的,所以應該有一個很好的理由來使用它。

$(document).ready(function() { 
    function refresh(){ 
     $.get('some_page.html', function (data) { 
      $('#some_div').html(data); 

      // call itself recursively 
      setTimeout(refresh, 1000); 
     });    
    }; 

    // init 
    refresh(); 
});