Blaze — компілятор шаблонів Blade від команди Livewire, що зменшує навантаження рендерингу компонентів у міру масштабування застосунку. Працює як пряма заміна стандартного Blade-компілятора і пропонує три рівні оптимізації — від оптимізованого компілятора до compile-time folding, який попередньо рендерить компоненти в статичний HTML.
- Оптимізований компілятор — до 97% скорочення накладних витрат
- Memoization для кешування повторних рендерів компонентів
- Compile-time folding для попереднього рендерингу статичних компонентів у HTML
- Вбудований профайлер з flame charts та таймінгом по кожному компоненту
- Не вимагає змін у наявних шаблонах Blade
Вбудований профайлер
Blaze має вбудований профайлер, який генерує flame charts та дає покомпонентний розбив часу виконання:
Blaze::debug();
Це допомагає визначити, які компоненти найкраще піддаються оптимізації.
Оптимізований компілятор
Рівень за замовчуванням замінює Blade-компілятор у Laravel на такий, що перетворює шаблони в оптимізовані PHP-функції. Не потребує налаштувань і працює як пряма заміна, заявляючи до 97% зниження накладних витрат.
Memoization
Другий рівень кешує вивід компонентів із ідентичними props. Це корисно для компонентів, які багаторазово зʼявляються на сторінці з однаковими даними — наприклад, іконок чи аватарів.
Compile-Time Folding
Третій рівень попередньо рендерить компоненти в статичний HTML під час компіляції, повністю усуваючи runtime-накладні витрати. Підходить для компонентів, чий вивід не залежить від runtime-даних.
Використання
Оптимізувати окремі компоненти можна директивою @blaze, або застосувати оптимізації до цілих директорій одразу:
Blaze::optimize()
->in(resource_path('views/components/app'))
->in(resource_path('views/components/admin'));
Деталі — на Blaze.dev.