Angular 16微前端懒加载模块无哈希文件缓存问题问询
关于无哈希的activity.js的缓存风险
存在明确的缓存旧版本风险。浏览器对静态资源的缓存逻辑依赖文件名和响应头规则:不带哈希的activity.js,如果服务器返回的响应头设置了较长缓存有效期(比如Cache-Control: max-age=86400),浏览器会默认判定文件未更新,直接复用本地缓存的旧版本。除非用户手动强制刷新页面(Ctrl+F5),否则大概率会加载旧的activity.js,导致微前端运行旧代码,引发功能不更新、与宿主应用兼容性异常等问题。
activity.js的内容与加载逻辑
activity.js是Angular微前端(基于Module Federation实现)生成的远程入口文件,核心作用是作为微前端的加载器:
- 它包含微前端模块的暴露声明、Angular运行时初始化逻辑,以及触发后续业务模块加载的引导代码;
- 你看到的带哈希的
apps_activity_src_app_app_module_ts.xxx.js这类懒加载业务模块,就是由它发起请求加载的。
至于index.html未引用却能被加载,是因为它由宿主应用的Module Federation加载器动态发起请求获取:宿主应用通过配置的远程微前端地址(比如http://xxx/activity.js),在需要加载该微前端时,动态创建script标签或通过fetch请求下载这个入口文件,再执行它启动微前端的加载流程,无需在index.html中硬编码引入。
内容的提问来源于stack exchange,提问作者Francesco
相关产品推荐
相关产品推荐

