Dit artikel is gebaseerd op de README van livewire/blaze als primaire bron. Op dit moment is er op laravel.com nog geen aparte documentatie voor Blaze.
Wat is Blaze?
Blaze is een officieel pakket van Livewire om Blade-componenten sneller te maken. Het richt zich niet alleen op Livewire-componenten, maar ook op gewone anonieme Blade-componenten. De README toont een benchmark waarbij 25.000 renders van een anoniem component teruggaan van 500 ms → 13 ms (ongeveer 97,4% reductie). Ook per scenario worden reducties van 91 tot 97% gerapporteerd.Drie optimalisatiestrategieën
Blaze biedt drie strategieën:compile (standaard), memo en fold.
Welke moet je kiezen?
Twijfel je? Begin dan met
compile en pas memo / fold alleen toe op plekken waar je een bottleneck hebt vastgesteld — dat is de veiligste aanpak.
Installatie en inschakelen
1) @blaze toevoegen aan afzonderlijke componenten
2) Per directory inschakelen met Blaze::optimize()
Beperkingen
Dit zijn de beperkingen die expliciet in de README staan.- Klassegebaseerde componenten worden niet ondersteund
- De variabele
$componentis niet beschikbaar - View composers / creators / lifecycle events worden niet afgevuurd
- Automatische injectie van
View::share()-variabelen wordt niet ondersteund (gebruik zo nodig expliciet$__env->shared('key')) @awareover de grens van Blade en Blaze heen is beperkt (ouder en kind moeten beide aan de Blaze-kant zitten)- Je kunt een Blaze-component niet rechtstreeks renderen via
view()(alleen via componenttags)
Combinatie met Flux UI
De README van Blaze vermeldt dat je, als je Flux UI gebruikt, direct aan de slag kunt door alleen Blaze te installeren, zonder extra configuratie.Hoe het werkt in het kort
Gewone Blade doorloopt bij elke render de volledige renderpipeline, inclusief componentresolutie en attribuutverwerking. Decompile-strategie van Blaze compileert dit naar een geoptimaliseerde PHP-functie die rechtstreeks wordt aangeroepen, waardoor de overhead van de pipeline sterk afneemt.
Zoals de README uitlegt, is het conceptuele verschil als volgt.
- Normaal: de standaard renderafhandeling van Blade wordt telkens uitgevoerd
- Blaze
compile: een gecompileerde functie wordt rechtstreeks aangeroepen - Blaze
fold: de HTML wordt tijdens compilatie ingebed, waardoor runtime-berekeningen nog verder afnemen
fold is het snelst, maar elementen die de aanname van statische inhoud doorbreken (authenticatiestatus, request-afhankelijke waarden, sessie-afhankelijke waarden, tijdsafhankelijke waarden, enz.) kunnen problemen veroorzaken. Pas het stapsgewijs toe, alleen op plekken met hoge belasting, en controleer daarbij het gedrag.