2016-07-20 6 views
1

Ich habe einige Google Charts, die eine CSV-Datei auf einem Apache Tomcat 5-Server lesen.Beschleunigung von Google-Karten - Apache Tomcat 5.5-Caching

Die Belastung dauert lange (15 Sekunden zum Anzeigen von Diagrammen).

Weiß jemand, wie ich das beschleunigen könnte?

Vielleicht Caching auf Tomcat 5.5?

-Code unten

function FwThroughputStacked(){ 
    $.get("../Data_Access/Overall_Fortinet_DLUL_Throughput_Report.csv", function(csvString) { 
     var arrayData = $.csv.toArrays(csvString, {onParseValue: $.csv.hooks.castToScalar}); 
     var data = new google.visualization.arrayToDataTable(arrayData); 
     var DLThroughputView = new google.visualization.DataView(data); 
     DLThroughputView.setColumns([0,1,2,3,4,5,6,7,8,9,10]); 
     var ULThroughputView = new google.visualization.DataView(data); 
     ULThroughputView.setColumns([0,11,12,13,14,15,16,17,18,19]); 

     var ULThroughputStackedOps = { 
     chartArea: {width: '80%', height: '75%'}, 
     explorer: {actions: ["dragToZoom", "rightClickToReset"]}, 
     isStacked: true, 
     hAxis: {title: data.getColumnLabel(0), minValue: data.getColumnRange(0).min, maxValue: data.getColumnRange(0).max, textStyle: {fontSize: 9}}, 
     vAxis: {title: "Megabits/s", minValue: data.getColumnRange(11).min, maxValue: data.getColumnRange(11).max, textStyle: {fontSize: 10}}, 
     legend: {position: 'top', maxLines: 10, textStyle: {fontSize: 9} }, 
     }; 
     var ULThroughputOps = { 
     chartArea: {width: '80%', height: '75%'}, 
     explorer: {actions: ["dragToZoom", "rightClickToReset"]}, 
     hAxis: {title: data.getColumnLabel(0), minValue: data.getColumnRange(0).min, maxValue: data.getColumnRange(0).max, textStyle: {fontSize: 9}}, 
     vAxis: {title: "Megabits/s", minValue: data.getColumnRange(11).min, maxValue: data.getColumnRange(11).max, textStyle: {fontSize: 10}}, 
     legend: {position: 'top', maxLines: 10, textStyle: {fontSize: 9} },   
     }; 
     var DLThroughputOps = { 
     chartArea: {width: '80%', height: '75%'}, 
     explorer: {actions: ["dragToZoom", "rightClickToReset"]},   
     hAxis: {title: data.getColumnLabel(0), minValue: data.getColumnRange(0).min, maxValue: data.getColumnRange(0).max, textStyle : {fontSize: 9}}, 
     vAxis: {title: "Megabits/s", minValue: data.getColumnRange(1).min, maxValue: data.getColumnRange(1).max, textStyle : {fontSize: 10}}, 
     legend: {position: 'top', maxLines: 10, textStyle: {fontSize: 9} },   
     }; 
    var DLThroughputStackedOps = { 
     chartArea: {width: '80%', height: '75%'}, 
     explorer: {actions: ["dragToZoom", "rightClickToReset"]},   
     isStacked: true, 
     hAxis: {title: data.getColumnLabel(0), minValue: data.getColumnRange(0).min, maxValue: data.getColumnRange(0).max, textStyle: {fontSize: 9}}, 
     vAxis: {title: "Megabits/s", minValue: data.getColumnRange(1).min, maxValue: data.getColumnRange(1).max, textStyle: {fontSize: 10}}, 
     legend: {position: 'top', maxLines: 10, textStyle: {fontSize: 9} }, 
     }; 

    var chart = new google.visualization.LineChart(document.getElementById('DLThroughput')); 
     chart.draw(DLThroughputView, DLThroughputOps); 
    var chart = new google.visualization.AreaChart(document.getElementById('DLThroughputStacked')); 
     chart.draw(DLThroughputView, DLThroughputStackedOps); 
    var chart = new google.visualization.AreaChart(document.getElementById('throughputStacked')); 
     chart.draw(ULThroughputView, ULThroughputStackedOps); 
    var chart = new google.visualization.LineChart(document.getElementById('throughput')); 
     chart.draw(ULThroughputView, ULThroughputOps); 
    }); 
    } 
+0

Wissen Sie, wie lange es dauert, den CSV herunterzuladen oder die obige Funktion auszuführen? Wie viele Zeilen sind in der CSV? – WhiteHat

+0

Es ist eine große CSV, die jede Stunde automatisch von einem unserer Systeme generiert wird. Der CSV-Download dauert die meiste Zeit - also frage ich mich, ob wir das Google Chart irgendwie zwischenspeichern können - also wird es nicht bei jeder Aktualisierung neu geladen, sondern lädt jede Stunde neu. – Kieran

+0

Sie könnten ein Bild aus dem Diagramm erzeugen und es stattdessen mit 'chart.getImageURI()' anzeigen, bis es Zeit zum Aktualisieren ist - [hier ist ein Beispiel] (http://stackoverflow.com/a/38464203/5090771) – WhiteHat

Antwort

0

DyGraphs zur Verfügung gestellt viel schneller Charting ohne Notwendigkeit herum zu verwirren mit Caching. Ich kann jetzt 20 Charts auf einem einzigen Blatt laden & es lädt schneller als ein einzelnes Diagramm mit Google Charts!