Laravel 多vhost部署时Views视图缓存跨站点同步问题求助
Laravel 双站点视图同步异常排查思路
- 检查视图读取路径配置
打开两个站点的config/view.php文件,查看paths数组的配置项,确认是否硬编码了原站点的视图目录绝对路径(例如/www/wwwroot/app.mydomain.com/resources/views)。如果复制后没有修改为新站点对应的目录,新站点会一直读取原站点的视图文件,自然会出现修改新站视图不生效、修改原站视图双站同步更新的问题。 - 检查视图编译缓存路径配置
查看config/view.php中的compiled配置项,以及站点.env文件中的VIEW_COMPILED_PATH环境变量,确认两个站点的配置是否指向同一个绝对路径。如果共享同一个缓存目录,修改原站视图后生成的新缓存会被两个站点同时读取。
可分别在两个站点的项目根目录执行php artisan tinker,输入config('view.compiled')输出当前生效的缓存路径,对比是否一致。 - 验证新站点视图缓存目录权限
确认新站点的storage/framework/views目录权限配置正确,保证Web服务运行用户(如www、nginx)对该目录有读写权限。如果目录不可写,Laravel无法生成新的编译缓存,会一直读取已有的旧缓存文件。 - 清理并重置站点缓存
分别进入两个站点的项目根目录,执行以下命令清理所有相关缓存:
执行完成后再分别修改两个站点的视图文件,验证异常是否仍然存在。php artisan view:clear php artisan cache:clear php artisan config:clear - 排查全局缓存规则
最后确认是否配置了CDN、反向代理缓存或者全局页面缓存规则,错误共享了两个站点的视图响应。由于修改控制器等PHP文件可正常生效,该情况概率较低。
内容的提问来源于stack exchange,提问作者jx12345
相关产品推荐
相关产品推荐

