新JS已经部署,页面HTML却继续引用旧static version,或不同节点返回不同版本。问题多在部署顺序、共享存储和CDN缓存。
解决记录
步骤1:比较所有Web节点pub/static/deployed_version.txt、HTML中的/version数字及文件校验和。
步骤2:使用同一构建产物原子切换到各节点,代码、静态文件和版本号不能分批不一致暴露。
步骤3:清Magento FPC后按Host和static路径清CDN,避免CDN缓存旧HTML或旧404。
步骤4:检查Nginx static签名重写规则和symlink权限,不能用关闭静态签名长期规避。
命令与数据检查
for h in web1 web2; do ssh $h 'cat pub/static/deployed_version.txt'; donecurl -sS https://shop.example/ | grep -o '/static/version[0-9]*/' | headsha256sum pub/static/frontend/Vendor/theme/*/*/js/app.js
上线前验收
连续请求命中不同节点时HTML版本一致,新资源返回200,旧HTML不再引用已删除路径。

