这对某些人来说可能很明显,但我一直在想:我为什么要依赖Google 的服务器来为我的网站托管 jQuery?
仅仅是因为它以这种方式加载更快吗?
这是因为:
在几种情况下,您可能不想使用 Google CDN 中的 jQuery:
当您构建 Web 服务器与客户端托管在同一网络上的 Intranet 应用程序时。 如果您使用 Google 的 CDN jQuery,您将调用 Internet 而不是本地网络上的网络服务器。这会增加您组织的带宽,并且速度会变慢。
当您想离线运行您的应用程序时。(与第一个问题非常相关)如果您需要在开发环境中工作(例如使用Bower管理),您可能需要能够在没有任何互联网连接的情况下使您的应用程序工作(即:在火车上 :)
当您通过 SSL 提供需要 jQuery 的页面时。 您应该通过 SSL 提供 JavaScript 以及您的页面以避免安全问题和警告。
此外,Microsoft在其 CDN 上托管 jQuery。这是与使用 Google 托管的 jQuery 相媲美的另一种选择。
TJ VanToll的这项研究让我相信,最好将 jQuery 与其他脚本连接起来,而不是从 CDN 加载它。
原因是在移动设备上获取 jQuery 所涉及的延迟:
“2012 年,美国移动网络上的平均 RTT 时间为 344 毫秒。这 344 毫秒不仅适用于每个 HTTP 请求(现在平均网页产生 93 个请求),还适用于每个 DNS 查找和 TCP 连接......虽然平均 RTT 正在提高,但只有很小的额外收益,因为当前的网络在物理学规定的理论极限的一小部分范围内。”
他还引用了Steve Souders 的这篇文章,说明了为什么您实际上不太可能从使用 CDN 中获得缓存优势:
“由于 CDN 提供程序、jQuery 版本和协议使用(http 与 https)的碎片化,获得 CDN 缓存命中的机会非常低 - 从外部域下载有可能执行的不是一个,而是三个往返(DNS 查找、TCP 连接和 HTTP GET)。”
最大的好处是缓存。理论上,如果访问者访问了一个正在加载其 JavaScript 库的站点,例如来自 Google CDN 的 jQuery,那么当他们访问您的网站时,该库已经在该用户的浏览器缓存中,无需再次下载. 这在理论上听起来很棒。
在这里和其他地方分享的好处都是理论上的。刚刚对使用 CDN 以及它是否提供预期的性能优势进行了深入分析。 http://www.root777.com/appdev/does-using-google-libraries-api-cdn-give-you-performance-benefits
不让谷歌托管你的 jQuery 的一个主要原因是,如果你在中国,它不会下载。它与由 Google CDN 托管的许多其他脚本、字体等一起被阻止。如果您需要接触中国观众,您最好始终使用托管在您自己的服务器上的后备。 谷歌 APIS 在中国被封锁
这里有一些很好的回答“为什么你应该......”和“为什么你不应该......”
如果您确实想从 CDN 加载 jQuery,我只是想添加一个替代 Google 的列表。
但总而言之,您基本上是在提高您的整体网站/应用程序性能。
使用 Service Worker 签署 CDN,您可以在客户端生命周期内下载一次 CDN,而不是每次更新代码时。