修改Laravel视图模板后缀后,若Redis缓存中残留旧后缀映射会导致渲染失败;需先执行php artisan config:get view.cache确认缓存状态,再更新config/view.php的extensions数组(新后缀置顶)或动态注册,接着清Redis中laravel_view:*相关key,最后运行view:clear和view:cache强制重新编译验证。

修改Laravel视图模板后缀时,若Redis缓存中仍存在旧后缀对应的编译视图缓存,会导致页面渲染失败或空白——因为Blade引擎找不到匹配的已编译PHP文件,而Redis又缓存了过期的视图路径映射。
确认当前视图缓存是否启用
执行php artisan config:get view.cache,若返回true,说明视图缓存已开启;若为false或报错,则跳过后续清缓存步骤。
这一步必须先做,否则盲目清缓存可能中断线上服务。
修改视图后缀并同步更新缓存逻辑
方法一:直接替换默认后缀(适用于全项目统一变更)
打开config/view.php,找到'extensions'数组,将'blade.php'替换为你想要的新后缀,例如'html':
'extensions' => ['html', 'php', 'blade.php'],
【注意】新后缀必须排在数组首位,否则Laravel不会优先识别它作为默认编译入口。
方法二:动态注册新后缀(适用于渐进式迁移)
在App\Providers\AppServiceProvider的boot()方法中添加:
View::addExtension('tpl', 'blade');
这行代码让.tpl文件也能被Blade引擎编译,但不改变原有.blade.php行为,可双轨并行。
清除Redis中残留的视图缓存
第一步:停止所有请求写入,避免缓存重建过程中混入旧路径
第二步:进入Redis CLI,执行redis-cli -n 0(假设你用的是database 0)
第三步:删除所有以laravel_view:开头的key
KEYS laravel_view:* | xargs redis-cli -n 0 DEL
第四步:如果使用了自定义CACHE_PREFIX(如CACHE_PREFIX=prod_v2_),则需改用KEYS prod_v2_laravel_view:*再执行DEL
【关键前提】必须确保config/cache.php中stores.redis.prefix与实际使用的前缀一致,否则DEL命令找不到目标key。
强制重新编译视图并验证
1. 执行php artisan view:clear → 清除本地storage/framework/views/下的已编译PHP文件
2. 执行php artisan view:cache → 触发Blade引擎按新后缀重新扫描并编译所有模板
3. 访问任意一个刚改过后缀的页面(如resources/views/welcome.html),观察是否正常渲染
如果页面返回500且日志提示View [welcome] not found,说明config/view.php中'extensions'未把新后缀置顶,或该文件未被view:cache扫描到——此时需检查文件权限及是否位于resources/views子目录下。


















