У меня есть некоторые Диаграммы Google, читающие CSV на сервере Apache Tomcat 5.Ускорение графиков Google - кэширование Apache Tomcat 5.5
Нагрузка занимает много времени (15 секунд для отображения диаграмм).
Кто-нибудь знает, как я смог бы ускорить это?
Возможно, кеширование на tomcat 5.5?
Код ниже
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);
});
}
Знаете ли вы, сколько времени требуется для загрузки csv против запуска функции выше? сколько строк в csv? – WhiteHat
Это большой CSV, который генерируется автоматически одной из наших систем каждый час. Загрузка CSV занимает большую часть времени - поэтому мне интересно, можно ли как-то кэшировать Google Chart, чтобы он не перезагружался при каждом обновлении, а перезагружался каждый час. – Kieran
вы можете создать изображение из диаграммы и отобразить его вместо него с помощью 'chart.getImageURI()', пока не приступите к обновлению - [здесь приведен пример] (http://stackoverflow.com/a/38464203/5090771) – WhiteHat