发版后控制台一排 404,请求的是 app.3f9c1a.js,磁盘上是 app.8b2d4e.js,HTML 看着是新的,引用却对不上。碰到这种情况,我一般先确认改动有没有真的生效。
原因不复杂,HTML 由模板缓存渲染,构建产物更新了但页面壳还是旧的,或者部署时只传了 assets 没传 index。浏览器拿到旧 HTML 就会去要旧 hash 的文件。
碰到「构建 hash 引用」这类问题,我习惯先把当前配置原样备份一份,改坏了立刻换回来,不用现场推。日志级别临时调高可以,记得改回去,长期开着既占磁盘又掩盖真问题。
grep -o 'app\.[a-z0-9]*\.js' dist/index.html ls dist/assets/app.*.js # 两边文件名必须一致
权限不要一口气开到最大,先加到够用再往上试,范围小才好收。把复现步骤压到三条以内,交给同事也能跑出来,才算真的定位清楚。
具体做法是,先对比服务器上 index.html 里的文件名和磁盘上的实际文件;确认部署脚本把 HTML 和 assets 一起上传 别只同步静态目录;CDN 上把 HTML 设成不缓存或者短缓存 让新壳立刻生效。
最后用这个标准收尾,刷新页面后所有静态请求都是 200,控制台没有 404。
