Cet article s’appuie sur le README de livewire/blaze comme source primaire. À l’heure actuelle, il n’existe pas de documentation dédiée à Blaze sur laravel.com.
Qu’est-ce que Blaze ?
Blaze est un package officiel de Livewire qui accélère le rendu des composants Blade. Il s’applique non seulement aux composants Livewire, mais aussi aux composants Blade anonymes classiques. Le README présente, pour un benchmark de 25 000 rendus d’un composant anonyme, un passage de 500 ms → 13 ms (soit une réduction d’environ 97,4 %). Selon les scénarios, des réductions de 91 à 97 % sont également signalées.Trois stratégies d’optimisation
Blaze propose trois stratégies :compile (par défaut), memo et fold.
Laquelle choisir ?
| Stratégie | Quand la choisir | Avantages | Précautions |
|---|---|---|---|
compile | Stratégie standard à choisir en premier | Grande compatibilité, gain de performance facile sans configuration | Vérifier les limitations communes |
memo | Icônes, badges, etc. rendus plusieurs fois avec les mêmes props | Réduit le coût des rendus après le premier | Inutilisable pour les composants avec slot |
fold | UI statiquement déterminable, pour viser la performance maximale | Élimine presque toute la surcharge d’exécution | Gérer avec soin l’état global et les valeurs dynamiques sous peine d’incohérence |
compile puis appliquer memo / fold uniquement aux points où un goulot d’étranglement a été identifié est la démarche la plus sûre.
Installation et activation
1) Ajouter @blaze à un composant individuel
2) Activer par répertoire avec Blaze::optimize()
Limitations
Voici les limitations explicitement mentionnées dans le README.- Les composants basés sur des classes ne sont pas pris en charge
- La variable
$componentn’est pas utilisable - Les View composers / creators / lifecycle events ne sont pas déclenchés
- L’injection automatique des variables de
View::share()n’est pas prise en charge (utilisez explicitement$__env->shared('key')si nécessaire) @awareentre Blade et Blaze a des limitations (parent et enfant doivent tous deux être côté Blaze)- Il n’est pas possible d’effectuer le rendu direct d’un composant Blaze avec
view()(uniquement via une balise de composant)
Compatibilité avec Flux UI
Le README de Blaze indique que si vous utilisez Flux UI, il suffit d’installer Blaze pour l’utiliser, sans configuration supplémentaire.Fonctionnement en résumé
Le Blade classique passe à chaque fois par une pipeline de rendu qui inclut la résolution des composants et le traitement des attributs. La stratégiecompile de Blaze compile cette pipeline en une fonction PHP optimisée appelée directement, ce qui réduit considérablement la surcharge de la pipeline.
Comme l’explique le README, la différence conceptuelle est la suivante.
- Standard : exécution du rendu Blade à chaque fois
- Blaze
compile: appel direct d’une fonction compilée - Blaze
fold: intégration du HTML à la compilation, réduisant encore les calculs à l’exécution
fold est le plus rapide, mais tout élément rompant le caractère statique (état d’authentification, valeurs dépendantes de la requête, de la session ou du temps, etc.) peut être source de dysfonctionnements. Ne l’appliquez qu’aux zones à forte charge, en vérifiant le comportement au fur et à mesure.