【问题标题】:Bundling vs using jsDelivr (CDN)?捆绑与使用 jsDelivr (CDN)?
【发布时间】:2013-12-05 13:16:58
【问题描述】:

我最近遇到了以下情况

 http://www.jsdelivr.com

这是一个托管许多js文件的cdn。但我很困惑,我打算在 asp.net mvc 中使用捆绑将多个 js 文件捆绑在一起并将其存储为 1 个 js 文件并与我的内容一起托管。

但现在看来我可以从上面的 CDN 下载了。

推荐,假设我有 8 个 js 文件,我将它们捆绑到 1 个 js 文件中,就浏览器而言,这实际上是一个调用,但对我的网站而言。

或者使用 CDN,但这将是 8 个调用(8 个 js 文件),但当然是通过离您最近的国家/地区的 CDN 托管。

哪个是可取的?

【问题讨论】:

    标签: asp.net-mvc asp.net-mvc-4 bundling-and-minification


    【解决方案1】:

    你应该评估:

    1) 您想为您的用户确保低延迟吗?

    然后,这取决于您的客户/用户所在的位置。如果与您的服务器相比,他们对 jsdelivr.com 的延迟较低,我建议您使用他们的服务,因为这会加快他们的加载时间。但请记住,大多数浏览器只能处理大约 4-6 次并行下载,因此请确保您在这两个选项之间进行经验测量 - 即使延迟较高,您的捆绑解决方案也可能会更快。

    2) 您想减轻服务器负载吗?

    通过引用他们的服务器,您将减少来自您服务器的传出流量。如果您预计服务器负载会很重,您可能希望使用他们的服务来卸载数据和 CPU 负载。如果您在 EC2 上托管,这可能是一种经济高效的解决方案...

    【讨论】:

    • “大多数浏览器只能处理大约 4-6 次并行下载”**每个主机。
    • 感谢您的精彩解释。
    • HTTP2 中的此更改,如果所有文件在同一个域中,则在单个请求中下载所有文件
    【解决方案2】:

    在 HTTP/2 中,您不应缩小外部资源。单独加载所有文件,HTTP/2 将共享同一个 HTTP 连接并在一个连接中下载所有文件。这与捆绑相同。

    所以,现在,选择 JSDelivr,不要捆绑文件。

    【讨论】: