为什么要使用 Google 的 CDN 进行 jQuery?

这对某些人来说可能是显而易见的,但是我一直在想: 为什么我要依赖于 谷歌的服务器来为我的站点托管 jQuery?

只是因为这样装载更快吗?

42515 次浏览

这是因为:

  1. 它增加了可用的并行性。 < br/> (大多数浏览器一次只能从给定的站点下载3或4个文件)

  2. 它增加了缓存命中的可能性。 < br/> (随着越来越多的站点遵循这种做法,越来越多的用户已经准备好了文件。)

  3. 它确保有效载荷尽可能小。 < br/> (Google 可以以多种格式(如 GZIP 或 DEFLATE)对文件进行预压缩。这使得下载时间变得非常小,因为它是超级压缩的,而且不是在运行时压缩的。)

  4. 它减少了服务器使用的带宽量。 < br/> (Google 基本上提供免费带宽)

  5. 它确保用户将得到一个地理上相近的响应。 < br/> (谷歌的服务器遍布世界各地,这进一步减少了延迟。)

  6. (可选) 它们将自动使您的脚本保持最新。 < br/> (如果你喜欢“凭直觉行事”,你总是可以使用他们提供的任何脚本的 最新的版本。这些可以修复安全漏洞,但通常只是破坏你的东西。)

有几种情况下,没有可能希望从 Google 的 CDN 中使用 jQuery:

  1. 当你正在建立一个内部网 Web 服务器所在的应用程序 托管在与 如果你使用 Google 的 CDN JQuery,您将调用 互联网而不是网络服务器 在本地网络上,这个 增加您的带宽 组织,而且比较慢

  2. 当您希望脱机运行应用程序时 。(与第一个问题相关)如果你需要在一个开发环境中工作(例如用 鲍尔管理) ,你可能需要能够让你的应用程序在没有任何互联网连接的情况下工作(例如: 在火车上)

  3. 当您需要定制它时。例如,如果您使用 咕哝来构建库,以便只使用某些模块,或者设置 < a href = “ https://github.com/jquery/jquery # AMD-name”rel = “ norefrer”> AMD name

  4. 当您通过 SSL 提供页面时 这需要 jQuery 通过 SSL 为 JavaScript 提供服务 以及您的网页,以避免安全 问题和警告

另外,在 CDN 上使用 微软托管 jQuery,这是另一个可以与使用谷歌托管的 jQuery 相媲美的选择。

缓存带来的最大好处是。该理论认为,如果访问者访问了一个正在加载 JavaScript 库的网站,比如说从 Google CDN 加载 jQuery,那么当他们访问你的网站时,该库已经在该用户的浏览器缓存中,不需要再次下载。理论上这听起来不错。

这里和其他地方分享的利益都是理论上的。刚刚遇到一个深入的分析使用 CDN,如果它提供了预期的性能好处。 Http://www.root777.com/appdev/does-using-google-libraries-api-cdn-give-you-performance-benefits

TJ VanToll的这个 学习使我确信,最好将 jQuery 与其他脚本连接起来,而不是从 CDN 加载它。

原因是在移动设备上获取 jQuery 所涉及的延迟:

“2012年,美国移动网络上的平均 RTT 时间 是344ms。而且这344ms 不仅适用于每一个 HTTP 请求- 现在平均每个网页都有93个 DNS 查询 和 TCP 连接... ... 虽然平均 RTT 正在改善,但只有 由于目前的网络是在一个 物理定义的理论极限的小因素

他还引用了史蒂夫•索德斯(Steve Souders)的 这篇文章来说明为什么使用 CDN 实际上是 不太可能获得缓存的好处:

”由于 CDN 提供程序、 jQuery 版本和 协议使用(http 与 https) ,获得 CDN 缓存的机会 命中率低得令人震惊-从外部域名下载 执行三次往返(DNS 查找, 一个 TCP 连接和一个 HTTP GET)。”

不让谷歌托管你的 jQuery 的一个主要原因是,如果你在中国,它不会下载。它和许多其他的脚本、字体等一起被屏蔽了。.由 Google CDN 托管。如果你需要接触中国读者,你最好总是使用自己服务器上的备用服务器。 谷歌 APIS 在中国被屏蔽

对于“为什么你应该...”和“为什么你不应该...”,这里有一些很好的回答

如果您确实想从 CDN 加载 jQuery,那么我只是想添加一个 Google 替代品列表。

但是总的来说,你基本上正在提高你的整个网站/应用程序的性能。

使用 ServiceWorker 登录 CDN,您可以在客户端生存期内下载一次 CDN,而不是每次更新代码时下载。