Laravel视图缓存未按预期生效:执行view:cache后仍使用原blade文件
Laravel
view:cache 命令使用疑问解答 先明确 view:cache 的实际作用
view:cache 用于预编译所有Blade视图并生成对应缓存文件,但它不会强制锁定缓存禁止更新。Laravel视图系统默认会对比原始.blade.php文件与缓存文件的修改时间:
- 若原始文件的修改时间晚于缓存文件,系统会自动重新编译视图并覆盖缓存
- 只有在执行
view:cache后不再修改原始Blade文件时,预编译的缓存才会持续被使用
确保应用使用预编译缓存的关键操作
要让应用稳定依赖预编译的缓存视图,需注意以下几点:
- 环境配置达标:
.env文件中必须设置APP_DEBUG=false,同时APP_ENV设为production或staging这类非开发环境 - 按顺序执行命令:
- 先清除旧视图缓存:
php artisan view:clear - 再执行预编译命令:
php artisan view:cache
- 先清除旧视图缓存:
- 禁止修改原始Blade文件:执行完
view:cache后,不要改动.blade.php文件,否则系统检测到文件变化会重新编译视图,导致预缓存失效 - 检查缓存目录权限:确认
storage/framework/views目录具备正确的读写权限,避免缓存文件无法生成或读取,迫使系统 fallback 到编译原始文件
验证是否使用预编译缓存的方法
- 执行
view:cache后,查看storage/framework/views目录,会生成一批以哈希命名的PHP文件,这些就是预编译的缓存视图 - 修改原始
.blade.php文件后,不执行view:cache直接刷新页面:若页面内容未变化,说明正在使用预编译缓存;若内容更新,则说明系统重新编译了视图
内容的提问来源于stack exchange,提问作者Azvya Erstevan
相关产品推荐
相关产品推荐

