У меня странная проблема на веб-сайте, который я создаю. На странице, у которой есть проблема, я использую несколько highcharts. Все работает нормально, но время рендеринга слишком велико (около 5 секунд).php: laravel медленный просмотр времени рендеринга при рендеринге javascript для highcharts
Когда я проверить его в хроме, я вижу что-то вроде этого:
В 8 сценариев для Highcharts находятся в красной коробке. Понятно, что проблема в этом.
Чтобы отобразить сценарии для высоких диаграмм (javascript), я создал контроллер и виды. Я использую их в шаблоне таким образом:
{{ Html::script(url ('/highchart/gauge', [$humidityInside->sd_value , 'humidityInside', 'Luchtvochtigheid binnen','%',0,100,'#55BF3B','#DDDF0D','#DF5353'])) }}
и в контроллере highchart я просто отправить переменную в целях:
public function gauge($value,$divname,$chartTitle,$suffix,$minValue,$maxValue,$colorMin,$colorMed,$colorMax)
{
return view('highchart.gauge')->with(compact('value' , 'divname','chartTitle','suffix','minValue','maxValue','colorMin','colorMed','colorMax'));
}
мнение, то просто придающей JavaScript, вкладывая в переменных в нужном месте:
$(function() {
var gaugeOptions = {
chart: {
type: 'solidgauge'
},
title: null,
pane: {
center: ['50%', '85%'],
size: '140%',
startAngle: -90,
endAngle: 90,
background: {
backgroundColor: (Highcharts.theme && Highcharts.theme.background2) || '#EEE',
innerRadius: '60%',
outerRadius: '100%',
shape: 'arc'
}
},
tooltip: {
enabled: false
},
// the value axis
yAxis: {
stops: [
[0.1, '{{ $colorMin }}'], // green
[0.8, '{{ $colorMed }}'], // yellow
[0.9, '{{ $colorMax }}'] // red
],
lineWidth: 0,
minorTickInterval: null,
tickPixelInterval: 400,
tickWidth: 0,
title: {
y: -70
},
labels: {
y: 16
}
},
plotOptions: {
solidgauge: {
dataLabels: {
y: 5,
borderWidth: 0,
useHTML: true
}
}
}
};
$('#{{$divname}}').highcharts(Highcharts.merge(gaugeOptions, {
yAxis: {
min: {{ $minValue }},
max: {{ $maxValue }},
title: {
text: '{{ $chartTitle }} '
}
},
credits: {
enabled: false
},
series: [{
name: '{{ $chartTitle }}',
data: [{{ $value}} ],
dataLabels: {
format: '<div style=\"text-align:center\"><span style=\"font-size:25px;color:' +
((Highcharts.theme && Highcharts.theme.contrastTextColor) || 'black') + '\">{y}</span><br/>' +
'<span style=\"font-size:12px;color:silver\">{{$suffix}}</span></div>'
},
tooltip: {
valueSuffix: ' {{$suffix}}'
}
}]
}));
});
Как вы можете видеть на изображении, первый скрипт работает довольно хорошо, но время рендеринга каждого следующего сценария происходит на той или иной причине. Если я просто отрисую скрипт для одной из диаграмм, он работает нормально.
Любая идея, что меня замедляет?
Что произойдет, если вы попытаетесь открыть сценарий из браузера напрямую? Это так долго? – choz
Также, сколько данных содержится в '{{$ value}}'? Честно говоря, я не уверен, почему вы не просто используете вызов ajax для загрузки данных в js вместо того, чтобы использовать сервер для создания js-файла? – jardis
где вы получаете данные от своих контроллеров, чтобы передать их в диаграммы? – Moppo