2012-09-26 65 views
2

我目前必須在8000 - 32000點(4行* 8000點)附近繪製我通過JSON請求獲取我的數據,並且實際上完美地將數據返回給我不到一秒鐘。但是,無論何時我到達$ .plot點,它都會凍結IE8,並且需要永久加載多個點。這裏是我的代碼:jquery flot緩慢凍結IE

var data = []; 

     function onDataReceived(seriesData) { 
      var p = $.plot(placeholder, seriesData.seriesData, options); 
     } 
     $.ajax({ 
      url: '/Charts/LineChart?DataTypesToGraph=' + dataTypes + '&DatePull=' + chartDate + '&AssetID=' + $('#AssetID').val(), 
      method: 'GET', 
      async: true, 
      cache: true, 
      dataType: 'json', 
      success: onDataReceived 
     }); 

如何加快我的$ .plot使其加載速度快得多。也有一種方法可以做到這一點,所以它不凍結IE8?

非常感謝!

回答

4

您看到'凍結',因爲Flot尚未支持增量繪圖;在將控制權交還給瀏覽器之前,它呈現整個繪圖。有周圍沒辦法,除了黑客的代碼,但有兩件事情可以做,以幫助:

  1. 你可能會使用Excanvas;嘗試切換到Flashcanvas。根據我的經驗,它和Flot一樣好,並且性能顯着提升。許可「專業版」所需的31美元不會打破大多數預算。

  2. 每行有8000個點,大多數顯示最大寬度爲1920像素,平均值更像1280.如果您顯示整條線,沒有某種縮放/平移,重新渲染比實際在屏幕上可見的數據多4-6倍的數據。某些服務器端過濾/聚合可將點數降至2k,這將顯着提高性能。

但無論你做什麼,你都永遠不會在IE8上用大數據集獲得很好的性能。這是一個將近四年的瀏覽器,在JavaScript性能之戰之前發佈,使用模擬畫布;你只能這麼做。