Mam dziwny problem na stronie, którą buduję. Na stronie, która ma problem, używam kilku wysokogatunkowych. Wszystko działa dobrze, ale czas renderowania jest o wiele za długi (około 5 sekund).php: czas renderowania wolnego widoku laravel podczas renderowania javascript dla haseł
Kiedy sprawdzać go w chromie, widzę coś takiego:
W 8 skrypty dla highcharts są w czerwonym polu. Jasne jest, że problem jest tam.
Do renderowania skryptów do highcharts (javascript), utworzyłem kontroler i widoki. Używam ich w szablonie w ten sposób:
{{ Html::script(url ('/highchart/gauge', [$humidityInside->sd_value , 'humidityInside', 'Luchtvochtigheid binnen','%',0,100,'#55BF3B','#DDDF0D','#DF5353'])) }}
iw sterowniku highchart po prostu wysłać zmienną do widzenia:
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'));
}
Widok wtedy właśnie czyni javascript, wprowadzenie zmiennych na właściwym miejscu:
$(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}}'
}
}]
}));
});
Jak widać na zdjęciu, pierwszy skrypt działa całkiem ok, ale czas renderowania każdego następnego scenariusza będzie dla jednej lub innego powodu. Jeśli po prostu wykonam skrypt dla jednego z wykresów, to działa dobrze.
Każdy pomysł, co mnie spowalnia?
Co się stanie, jeśli spróbujesz otworzyć skrypt bezpośrednio z przeglądarki? Czy to trwa tak długo? – choz
Również, ile dokładnie danych zawartych jest w '{{$ value}}'? Szczerze mówiąc, nie jestem pewien, dlaczego nie używasz tylko wywołania ajax, aby załadować dane do js zamiast używać serwera do generowania pliku js? – jardis
gdzie otrzymujesz dane od kontrolerów, aby przekazać je do wykresów? – Moppo