2016-04-15 138 views
1

有沒有人有提高Rappid性能的建議?IE中的JointJS/Rappid性能問題

它必須在IE中運行(比Chrome執行速度慢10倍)。 加載1000個方塊和1000個連接器的圖形需要215s

我沒有任何幻想在我的代碼,我只是加載從JSON文件中的圖表:

graph.fromJSON(JSON.parse(input)); 

我的論文被設置爲異步=真,它提供了一個大的提升。從JSON加載似乎比以編程方式創建所有節點快得多。

我試過這裏的建議: https://groups.google.com/forum/#!topic/jointjs/dbdOrINRG8o但我無法讓FastPaper在IE中工作。

+0

Rappid使用永遠不會大規模執行的SVG元素。要渲染大量節點,請嘗試使用基於HTML畫布的庫,而不是像http://gojs.net –

回答

0

渲染唯一可見的元素能幫助你很多,但它不是免費的...

graph.fromJSON(JSON.parse(input));導入所有細胞進入圖形,paper檢測到這一變化,並呈現啓動。在這一刻,您將所有單元格的位置和大小設置爲圖形,以及視口(可見區域)。現在您需要過濾當前位於視口中的元素並渲染它們。

  • 獲取視野:var viewport = paperScroller.getVisibleArea()
  • 獲得元素在視口中:graph.findModelsInArea(viewport)

然後,你需要擴展dia.Paper並重寫renderView方法。它應該看起來像這樣:

joint.dia.PartialRenderPaper = joint.dia.Paper.extend({ 

    isVisible: function(cell) { 
     // detection logic 
    }, 
    renderView: function(cell) { 


     if (this.isVisible(cell) || cell.isLink()) { 

      return joint.dia.Paper.prototype.renderView.apply(this, arguments); 
     } 

     return null; 
    }, 

});