如果一个前端页面中可能引入多个独立的组件,这些独立的组件与页面的技术栈无关,如一个使用 React、Vue 开发的页面引入了一个原生的 Web 组件,此时这些独立组件的共享缓存就是一个值得关注的问题。
常规做法
按照常规的思路,页面如果要引入 A 和 B 两个组件,两个组件都依赖了相同的模块 @lib,如果希望将模块 @lib 缓存共享,那么一般的做法是将共享模块单独提供一个 JS 包,无论是 A 或 B 的包在加载前都先加载好共享缓存包,此时就会存在三个包,对应着三个独立的请求。对于移动 App 来说,原本是两个组件包两个请求,但此时请求数的增加意味着由于为了实现缓存共享而降低了可用性。