Vai al contenuto principale
Questo articolo è stato compilato utilizzando come fonte primaria il README di livewire/blaze. Al momento su laravel.com non esiste una documentazione dedicata a Blaze.

Cos’è Blaze

Blaze è il pacchetto di accelerazione dei componenti Blade pubblicato ufficialmente da Livewire. Non riguarda solo i componenti Livewire, ma include anche i normali componenti Blade anonimi. Nel README viene mostrato un benchmark che, per 25.000 rendering di un componente anonimo, passa da 500ms a 13ms (riduzione di circa il 97,4%). Anche per scenario sono riportate riduzioni tra il 91% e il 97%.

Le tre strategie di ottimizzazione

Blaze fornisce tre strategie: compile (predefinita), memo e fold.

Quale scegliere

StrategiaQuando sceglierlaVantaggiNote
compileStrategia standard da scegliere per primaAlta compatibilità, facile da rendere veloce senza configurazioneLe limitazioni comuni vanno verificate
memoIcone, badge, ecc. che vengono renderizzati molte volte con le stesse propsRiduce il costo dei rendering successivi al primoNon utilizzabile con componenti che hanno slot
foldQuando si punta al massimo delle prestazioni su UI staticamente determinabileElimina quasi del tutto l’overhead di runtimeErrori nella gestione di stato globale o valori dinamici causano incoerenze
Se hai dubbi, l’approccio più sicuro è partire da compile e applicare memo / fold solo dove è stato individuato un collo di bottiglia.

Installazione e abilitazione

composer require livewire/blaze:^1.0
Ci sono due modi per abilitarlo.

1) Applicare @blaze a singoli componenti

@blaze

<button {{ $attributes }}>
    {{ $slot }}
</button>
Se necessario, cambia la strategia.
@blaze(memo: true)
@blaze(fold: true)

2) Abilitare a livello di directory con Blaze::optimize()

use Livewire\Blaze\Blaze;

public function boot(): void
{
    Blaze::optimize()
        ->in(resource_path('views/components'));
}
Dopo l’abilitazione, ripulisci le view compilate.
php artisan view:clear
@blaze è adatto a un utilizzo “per provare per prima cosa”, mentre Blaze::optimize() è adatto a un utilizzo “esteso in produzione”. Anche il README raccomanda di applicarlo gradualmente partendo da una directory limitata.

Limitazioni

Ecco le limitazioni chiaramente indicate nel README.
  • I componenti class-based non sono supportati
  • La variabile $component non è disponibile
  • View composers / creators / lifecycle events non vengono attivati
  • L’injection automatica delle variabili di View::share() non è supportata (se serve, usa esplicitamente $__env->shared('key'))
  • @aware a cavallo tra Blade e Blaze ha limitazioni (sia genitore sia figlio devono essere lato Blaze)
  • Non è possibile renderizzare direttamente un componente Blaze con view() (solo tramite tag del componente)

Compatibilità con Flux UI

Nel README di Blaze si indica che, se stai usando Flux UI, basta installare Blaze per iniziare a usarlo senza alcuna configurazione aggiuntiva.

Panoramica del funzionamento

Il normale Blade attraversa ogni volta una pipeline di rendering che include la risoluzione dei componenti e il processing degli attributi. Il compile di Blaze compila questo processo in una funzione PHP ottimizzata e la richiama direttamente, riducendo così notevolmente l’overhead della pipeline. Come spiega il README, concettualmente le differenze sono le seguenti.
  • Normale: esegue di volta in volta il processo di rendering standard di Blade
  • Blaze compile: chiama direttamente la funzione compilata
  • Blaze fold: incorpora l’HTML in fase di compilazione, riducendo ulteriormente le computazioni di runtime
fold è il più veloce ma, se ci sono elementi che rompono l’assunzione di staticità (stato di autenticazione, valori dipendenti dalla richiesta, valori dipendenti dalla sessione, valori dipendenti dal tempo, ecc.), può causare malfunzionamenti. Applicalo gradualmente, solo alle parti ad alto carico, verificando il comportamento.
Ultima modifica il 13 luglio 2026