为什么我应该使用谷歌的CDN的jQuery?
这可能是显而易见的,但我一直想知道:为什么我应该依靠Google的服务器为我的网站托pipejQuery?
这是因为它加载速度更快吗?
这是因为:
- 它增加了可用的并行性。
(大多数浏览器一次只能下载3或4个文件)。 - 这增加了将有一个caching命中的机会。
(随着越来越多的网站采取这种做法,更多的用户已经准备好了文件。) - 它确保有效载荷将尽可能小。
(谷歌可以用各种格式(如GZIP或DEFLATE)对文件进行预压缩,这使得下载时间非常短,因为它是超级压缩的,并且没有被压缩。) - 它减less了您的服务器使用的带宽量。
(谷歌基本上提供免费的带宽。) - 它确保用户将得到一个地理上密切的反应。
(谷歌在世界各地都有服务器,进一步减less了延迟。) - (可选) 他们会自动保持你的脚本是最新的。
(如果你喜欢“靠自己的裤子飞行”,你总是可以使用他们提供的任何脚本的最新版本,这些可以修复安全漏洞,但通常只是破坏你的东西。
有几种情况您可能不想使用Google的CDN中的jQuery:
-
当您在构build一个内部网应用程序时,Web服务器与客户端在同一networking上。 如果您使用Google的CDN jQuery,您将拨打互联网而不是本地networking上的networking服务器。 这会增加组织的带宽,速度会更慢。
-
当你想离线运行你的应用程序 。 (与第一个问题相关)如果您需要开发环境(例如使用Bower进行pipe理),则可能需要能够使您的应用程序在没有任何Internet连接的情况下工作(即:在火车中:)
-
当你需要定制它 。 例如,如果您使用Grunt构build库以仅使用某些模块或设置AMD名称
-
当您通过SSL提供需要jQuery的页面时。 您应该通过SSL以及页面提供JavaScript,以避免安全问题和警告。
此外, 微软在他们的CDN上托pipejQuery 。 这是使用Google托pipe的jQuery的另一个select。
TJ VanToll的这项研究使我确信,将jQuery与其他脚本连接起来比从CDN中加载jQuery更好。
原因是在移动设备上获取jQuery所涉及的延迟:
“2012年,美国移动networking上的平均RTT时间为344毫秒,344毫秒不仅适用于每个HTTP请求 – 平均网页现在使用93个 – 而且每个DNS查找和TCP连接…虽然平均RTT正在改善,但只有很小的额外收益,因为目前的networking只是物理学所规定的理论极限的一小部分。“
他还引用了Steve Souders的这篇文章 ,说明了为什么使用CDN实际上不太可能获得caching的好处 :
“由于CDN提供商,jQuery版本和协议使用(http与https)的碎片化,获得CDN高速caching命中的可能性惊人地低 – 而从外部域下载有潜力执行不是一个,而是三个往返(DNS查询,TCP连接和HTTP GET)“。
最大的好处是从caching。 这个理论是,如果一个访问者访问了一个正在加载他们的JavaScript库的站点,比如从Google CDN中说jQuery,那么当他们访问你的网站时,这个库已经在那个用户的浏览器caching中,不需要再次下载。 理论上这听起来很棒。
这里和别处共享的好处都是理论上的。 刚刚遇到了使用CDN的深入分析,并提供了预期的性能优势。 http://www.root777.com/appdev/does-using-google-libraries-api-cdn-give-you-performance-benefits
不让Google托pipe你的jQuery的一个主要原因是,如果你在中国,jQuery不会下载。 它与Google CDN托pipe的许多其他脚本,字体等一起被阻止。 如果您需要联系中国观众,最好始终使用托pipe在您自己的服务器上的回退function。 Google APIS在中国被封锁