Laravel+Vue.js部署至AWS EC2后代码更新不生效问题求助
解决Laravel+Vue AWS部署后代码更新不即时生效的问题
这种延迟更新的坑我之前踩过好几次,核心基本都是缓存没清理干净,咱们一步步来解决:
第一步:确认前端资源是否正确构建
拉取GitHub代码后,别忘了重新编译Vue的资源——如果你的仓库里只存了源码(resources/js里的文件),没存编译后的public/js/app.js,那必须运行:npm install # 如果有新依赖的话 npm run prod # 生产环境用这个,开发环境用npm run dev确保
~/laravel/public/js/app.js是最新编译后的版本。第二步:清除浏览器缓存
最简单的测试方法是用强制刷新(Windows/Linux按Ctrl+Shift+R,Mac按Cmd+Shift+R),跳过浏览器本地缓存加载新资源。长期解决的话,给静态资源加版本号:在webpack.mix.js里加上.version():mix.js('resources/js/app.js', 'public/js') .version();之后Laravel会自动生成带哈希后缀的
app.js?id=xxxx,浏览器会自动识别新文件,不用手动清缓存。第三步:清除Laravel后端缓存
运行以下命令清除视图、配置等缓存:php artisan view:clear php artisan config:clear php artisan cache:clear确保Laravel加载的是最新的视图和配置。
第四步:处理PHP OPcache缓存
如果服务器启用了OPcache(生产环境基本都会开),它会缓存编译后的PHP脚本,导致旧代码还在运行。解决方法:- 临时重启PHP服务(比如用FPM的话):
sudo systemctl restart php8.1-fpm # 替换成你的PHP版本,比如php7.4-fpm - 长期优化:可以在部署脚本里加入重启OPcache的步骤,或者调整
php.ini里的OPcache配置(生产环境建议保持opcache.revalidate_freq=60,部署后手动重启一次即可)。
- 临时重启PHP服务(比如用FPM的话):
第五步:刷新AWS CDN(如果用了CloudFront)
如果你的网站用了CloudFront做CDN,CDN会缓存静态资源,需要手动刷新缓存:- 登录AWS控制台,进入CloudFront服务
- 找到你的分发,切换到「Invalidations」标签
- 点击「Create Invalidation」,输入路径
/*(或者特定的/js/app.js),提交即可生效(通常几分钟内完成)
最后检查符号链接
虽然你说符号链接正常,但可以确认一下链接指向的文件是否是最新的:ls -l /var/www/html/laravel cat /var/www/html/laravel/js/app.js | head # 看开头内容是否和~/laravel/public/js/app.js一致
按照这些步骤操作后,基本就能即时看到更新后的内容了!
内容的提问来源于stack exchange,提问作者daniel8x
相关产品推荐
相关产品推荐

