Blade模板首次访问时自动编译为原生PHP并缓存至storage/framework/views/,修改后自动更新;可通过php artisan view:clear清空缓存,禁用缓存将导致性能严重下降。

在 Laravel 或 ThinkPHP 项目中,视图模板反复解析会拖慢响应速度,必须让 Blade 或 ThinkTemplate 编译为原生 PHP 并启用缓存机制,否则每次请求都重新 tokenize 和 render,性能直接腰斩。
Blade 模板如何触发编译并生成缓存文件
Blade 视图首次被访问时自动编译,无需手动执行命令——只要 【resources/views 目录下存在 .blade.php 文件】,且 Web 服务器有写入 storage/framework/views/ 的权限,就会在首次调用 view() 时生成对应缓存 PHP 文件。
检查缓存是否生效:打开 storage/framework/views/,看到一串长哈希名的 .php 文件(如 5a7b3c9d8e1f2.php),每个文件内容以 <?php 开头、含大量 echo 和条件判断语句,即为已编译的原生 PHP 视图。
修改 .blade.php 后,下次请求自动重建该缓存文件;若不修改,Laravel 永远不会重复编译。
立即学习“PHP免费学习笔记(深入)”;
强制刷新 Blade 缓存的三种方法
方法一:使用 Artisan 命令清空全部视图缓存
运行 php artisan view:clear → 系统删除 storage/framework/views/ 下所有缓存文件 → 下次访问任意视图时重新编译。
方法二:只清空指定视图缓存(Laravel 10+ 支持)
执行 php artisan view:clear --path=layouts/app.blade.php → 仅删除与该路径匹配的缓存项,其余保留,适合局部调试。
方法三:手动删除单个缓存文件
进入 storage/framework/views/,按文件修改时间排序,找到最新生成的、对应你刚改过的 .blade.php 的那个哈希文件,直接删掉它。这一步操作起来很简单,直接把文件拖进去就行。
ThinkPHP 模板编译缓存配置与验证
ThinkPHP 默认开启模板编译缓存,但需确认关键配置项:
第一步:打开 config/template.php,检查 'cache' => true 是否启用;
第二步:确认 'cache_path' => '../runtime/template/' 路径存在且可写;
第三步:确保 'auto_rule' => true(默认),这样模板文件修改后会自动重新编译;
第四步:访问页面后,进入 runtime/template/ 目录,看到以 .php 结尾的同名缓存文件(如 index.html.php),内容含 define('THINK_VERSION', ...) 和原生 PHP echo 语句,说明编译成功。
【若 runtime/template/ 下始终为空,一定是 cache_path 对应目录无写权限或 cache 设为 false】
禁用 Blade 编译缓存的危险操作
不要在生产环境设置 'view.compiled' => null 或修改 Illuminate\View\Compilers\BladeCompiler 的 compile 方法跳过缓存写入——这会让每次请求都重新解析 .blade.php 文件,词法分析 + AST 构建 + PHP 代码生成全量执行,QPS 直接跌 60% 以上。
也不要在 AppServiceProvider::boot() 中调用 Blade::flushCache(),它会在每次请求启动时清空所有缓存,完全抵消编译优势。



















