捆绑 (webpack/browserify) 是否比通过 CDN 更快?

Is bundling (webpack/browserify) faster than going through a CDN?

我很好奇有没有人研究过这个问题

在我工作的地方,我们的每个 projects/bundles 中都有 React、Bluebird、jQuery 和 Lodash。

我们使用 webpack 来捆绑所有这些依赖项,但我不确定它是否真的值得......我认为很多这些脚本会缓存在用户的浏览器上。

使用 CDN 并将这些包移出 webpack 包将减少构建时间并大大简化我们的构建过程。我们必须支持 IE8,所以我们必须 运行 通过 envify 和 ES3ify 做出反应。

有没有人研究过浏览器可以在多大程度上利用公共库的缓存?

捆绑减少了下载外部内容所需的 TCP 连接数 (JavaScript/CSS)。如果您的捆绑器还缩小了内容,它还会减少客户端需要获取的字节数。

使用 CDN 可以将您的内容...无论您是否捆绑它...靠近尝试下载它的 Web 浏览器。

为获得最佳效果,请同时使用两者。

捆绑是免费的,使用 CDN 通常很便宜。如果免费是你唯一的选择,一定要捆绑。如果您也可以预算 CDN,请将您的捆绑内容放在 CDN 上。

更新

根据您的评论 - 不要自行托管由高流量 public CDN 托管的常见依赖项,例如 Google。用户很可能已经在缓存中拥有您需要的内容。例如参见 [​​=10=].