Laravel视图缓存持续干扰:修改Blade文件后页面不更新求助
解决Laravel Blade视图缓存不更新的问题
一、开发环境临时禁用视图缓存
要是开发期间不想被视图缓存干扰,直接用这两种方式:
- 打开
.env文件,将APP_DEBUG设为true。Laravel在调试模式下会自动检测Blade文件的修改,自动重新编译缓存,不会复用旧缓存。之前设为false的话改回来即可。 - 直接修改
config/view.php里的cache配置项为false:
改完立刻生效,开发完成后记得改回默认的'cache' => false,env('VIEW_CACHE', true),避免影响生产环境性能。
二、强制清理顽固缓存
如果清完缓存后又自动生成,试试这些彻底清理的方法:
- 用Artisan命令全量清除缓存:
php artisan view:clear php artisan cache:clear php artisan config:clear - 手动删除缓存目录:直接清空
storage/framework/views下的所有文件,命令行可执行:
Windows用户直接打开对应文件夹删除所有文件即可。rm -rf storage/framework/views/*
三、排查缓存反复生成的根源
如果以上操作后问题依旧,大概率是以下原因导致:
- 目录权限异常:
storage/framework/views的权限不足,导致Laravel无法写入新的编译缓存,只能复用旧缓存。给目录设置正确权限:chmod -R 755 storage/framework/views chown -R www-data:www-data storage/framework/views # 对应你的Web服务运行用户,比如apache/www-data - PHP OPcache缓存未更新:开启OPcache后,它会缓存编译后的视图PHP文件。修改
php.ini里的OPcache配置:
改完重启PHP服务,OPcache就会定期检查文件更新。opcache.enable=0 # 临时关闭,开发完成后再开启 # 或者保留开启,设置自动校验文件变化 opcache.validate_timestamps=1 opcache.revalidate_freq=2 - 路由缓存未清理:如果使用了路由缓存,可能导致视图中的路由引用未同步更新,顺便清理路由缓存:
php artisan route:clear
四、生产环境注意事项
如果是生产环境遇到该问题,不要直接禁用视图缓存(会影响性能),每次部署完成后执行以下命令,强制重新编译所有视图缓存:
php artisan view:cache
内容的提问来源于stack exchange,提问作者Interestn_
相关产品推荐
相关产品推荐

