1. 微前端构建产物独立 CDN 部署与缓存策略的工程取舍
微前端构建产物独立 CDN 部署与缓存策略如何设计?有哪些工程取舍?
- 独立 CDN 部署的产物组织:版本目录、不可变文件名
- 缓存策略:长缓存与版本化 URL、缓存失效的取舍
- 缓存与发布的关系:快速回滚 vs 缓存污染
独立 CDN 部署的关键是「产物不可变 + 版本化寻址」:每个构建产物带有内容哈希(chunk 文件名含 hash)并归档到版本目录(如 /apps/orders/20260804.1/),部署只是「新增不可变文件」而非覆盖;子应用入口(remoteEntry、html entry)地址由配置中心指向具体版本目录,切换版本即切换入口。缓存策略上,带 hash 的 chunk 可长缓存(Cache-Control: immutable 一年),内容变了文件名就变、自然失效;而入口文件(remoteEntry/html)不能长缓存,用 no-cache + ETag 让浏览器每次校验,保证发布后新入口尽快生效。取舍点:长缓存省流量提升性能,但「入口短期缓存 + 版本切换」的组合中,CDN/浏览器缓存可能短暂提供旧入口,造成发布后的混合状态(部分用户旧版本);为此可对入口做短缓存 + 版本参数绕缓存,回滚时切配置即可,无需重新构建。工程实践:CDN 与源站分离、跨域 CORS 头统一、SRI 完整性校验(长缓存配合哈希防篡改)、缓存键按版本隔离(灰度期间新旧版本缓存互不污染)。
回答按「不可变产物 + 版本目录 → 分层缓存(hash 长缓存 vs 入口短缓存)→ 发布与回滚的缓存协调」组织,核心是「内容寻址让缓存安全、入口寻址让发布可控」。