跳转到主要内容
本文以 livewire/blaze 的 README 为一手信息进行整理。目前 laravel.com 上还没有 Blaze 的专用文档。

Blaze 是什么

Blaze 是 Livewire 官方公开的 Blade 组件加速包。目标不仅是 Livewire 组件,也包含普通的匿名 Blade 组件。 README 中给出了匿名组件渲染 25,000 次的基准数据:500ms → 13ms(约 97.4% 削减)。按场景分别测试,削减幅度也在 91~97% 之间。

三种优化策略

Blaze 提供 compile(默认)、memofold 三种策略。

该选哪一个

策略何时选用优点注意事项
compile首选的标准策略兼容性高,无需配置即可加速通用限制需要留意
memo用相同 props 反复渲染的图标、徽章等可以降低首次之后的重渲染成本带 slot 的组件不能使用
fold想让静态 UI 达到最高性能时几乎完全去除运行时开销全局状态和动态值处理不当会导致不一致
如果拿不准,推荐从 compile 开始,等定位到瓶颈后再对具体地方应用 memo / fold,这样比较安全。

安装与启用

composer require livewire/blaze:^1.0
有两种启用方式。

1) 在单个组件上加 @blaze

@blaze

<button {{ $attributes }}>
    {{ $slot }}
</button>
需要时可切换策略。
@blaze(memo: true)
@blaze(fold: true)

2) 用 Blaze::optimize() 按目录启用

use Livewire\Blaze\Blaze;

public function boot(): void
{
    Blaze::optimize()
        ->in(resource_path('views/components'));
}
启用后清理已编译视图。
php artisan view:clear
@blaze 适合”先试一试”的场景,Blaze::optimize() 适合”在生产中广泛应用”的场景。README 中也推荐先从限定的目录开始逐步铺开。

限制事项

以下是 README 中明确说明的限制:
  • 不支持基于类的组件
  • 无法使用 $component 变量
  • View composers / creators / lifecycle events 不会触发
  • 不支持 View::share() 变量的自动注入(如果需要,请显式使用 $__env->shared('key'))
  • 跨越 Blade 和 Blaze 的 @aware 有限制(父子两侧都必须在 Blaze 中使用)
  • 无法通过 view() 直接渲染 Blaze 组件(只能通过组件标签)

与 Flux UI 的兼容性

Blaze README 说明,如果你正在使用 Flux UI,只需安装 Blaze,无需其他配置即可开始使用

工作原理概述

普通的 Blade 每次渲染都会经过包含组件解析和属性处理的整套渲染管线。Blaze 的 compile 将其编译成优化过的 PHP 函数并直接调用,从而大幅削减管线的开销。 README 中说,概念上有如下差异:
  • 普通:每次都执行 Blade 的标准渲染流程
  • Blaze compile:直接调用编译好的函数
  • Blaze fold:在编译期就嵌入 HTML,进一步减少运行时计算
fold 速度最快,但只要有破坏静态化前提的因素(认证状态、依赖请求的值、依赖会话的值、依赖时间的值等),就可能引发问题。请只针对高负载位置使用,并在验证行为的同时分阶段推进。
最后修改于 2026年7月13日