Skip to main content
本文以 livewire/blaze 的 README 為第一手資訊整理。目前 laravel.com 上尚未有 Blaze 專用文件。

什麼是 Blaze

Blaze 是 Livewire 官方發佈的 Blade 元件加速套件。對象不僅限於 Livewire 元件,也包含一般的匿名 Blade 元件。 README 中匿名元件繪製 25,000 次的 benchmark 顯示從 500ms → 13ms(約 97.4% 縮減)。依情境不同也回報有 91〜97% 的縮減。

三種最佳化策略

Blaze 提供 compile(預設)、memofold 三種策略。

該選哪一個

若拿不定主意,較安全的做法是先從 compile 開始,只在被找出的瓶頸處套用 memo / fold

安裝與啟用

啟用方式有兩種。

1) 對個別元件加上 @blaze

視需要切換策略。

2) 用 Blaze::optimize() 以目錄為單位啟用

啟用後清除已編譯的 view。
@blaze 適合「先試試看」,Blaze::optimize() 則適合「在正式運行中大範圍套用」。README 也建議先從限定目錄開始逐步套用。

限制事項

以下是 README 中明示的限制。
  • 不支援類別型元件
  • 無法使用 $component 變數
  • View composer / creator / lifecycle event 不會觸發
  • 不支援 View::share() 變數的自動注入(若需要,請明確使用 $__env->shared('key')
  • 橫跨 Blade 與 Blaze 的 @aware 有限制(父子雙方都必須在 Blaze 側使用)
  • 無法用 view() 直接繪製 Blaze 元件(僅能透過元件標籤)

與 Flux UI 的相容性

Blaze README 說明,若使用 Flux UI只要安裝 Blaze 即可零設定啟用

運作機制概要

一般 Blade 每次都會走過包含元件解析與屬性處理的繪製 pipeline。Blaze 的 compile 會將其編譯為最佳化過的 PHP 函式直接呼叫,大幅減少 pipeline 的 overhead。 依照 README 說明,概念上有以下差異:
  • 一般:每次都執行 Blade 標準繪製流程
  • Blaze compile:直接呼叫已編譯的函式
  • Blaze fold:於編譯時直接嵌入 HTML,進一步減少執行時運算
fold 最快,但若有破壞靜態化前提的要素(認證狀態、依請求變化的值、依 session 或時間的值等)會導致問題。請鎖定高負載處,一邊確認行為一邊分階段套用。
最後修改於 2026年8月2日