我为什么要将谷歌的CDN用于jQuery?

时间:2010-02-01 22:01:03

标签: jquery performance cdn

这对某些人来说可能是显而易见的,但我一直在想:我为什么要依赖Google's server为我的网站托管jQuery?

是否只是因为它以这种方式加载速度更快?

7 个答案:

答案 0 :(得分:385)

这是因为:

  1. 增加了可用的并行度。
    (大多数浏览器一次只能从任何给定的网站下载3或4个文件。)

  2. 它增加了缓存命中的可能性。
    (随着越来越多的网站遵循此做法,更多用户已准备好文件。)

  3. 确保有效负载尽可能小。
    (Google可以以多种格式预压缩文件(如GZIP或DEFLATE)。这使得下载时间非常短,因为它是超级压缩的,不会动态压缩。)

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

  5. 确保用户获得地理位置相近的响应。
    (Google在全球范围内拥有服务器,进一步缩短延迟。)

    < / LI>
  6. (可选)他们会自动让您的脚本保持最新。
    (如果您喜欢“在裤子旁边飞行”,您可以随时使用他们提供的任何脚本的最新版本。这些可以修复安全漏洞,但通常只是破坏你的东西。)

答案 1 :(得分:56)

有几种情况可能想要使用Google的CDN中的jQuery:

  1. 在构建Intranet时 Web服务器所在的应用程序 托管在同一网络上 客户。如果您使用Google的CDN jQuery,你会打电话给 互联网而不是网络服务器 在本地网络上。这个 增加你的带宽 组织,而且速度较慢。

  2. 如果要脱机运行应用程序。 (与第一个问题相关)如果您需要处理开发环境(例如使用Bower进行管理),您可能需要能够在没有任何Internet连接的情况下使您的应用程序正常工作(即:在列车中) :)

  3. 当您需要自定义时。例如,如果您使用Grunt构建库以便仅使用某些模块或设置AMD name

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

  5. 另外,他们的CDN上有Microsoft hosts jQuery。这是与使用Google托管的jQuery相媲美的另一种选择。

答案 2 :(得分:28)

study TJ VanToll让我确信将jQuery与其他脚本连接起来比将其加载到CDN更好。

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

  

&#34; 2012年美国移动网络的平均RTT时间   是344毫秒。并且344ms不仅适用于每个HTTP请求 -   平均网页现在是93个 - 但也是每个DNS查找   和TCP连接...虽然平均RTT正在改善,但只有   由于目前的网络在一个范围内,所以可以获得额外的小额收益   由物理学决定的理论极限的一小部分。&#34;

他还引用Steve Souders的this post来说明为什么你使用CDN实际上不太可能获得缓存优势

  

&#34;由于CDN提供程序中的碎片,jQuery版本和   协议使用(http与https),获得CDN缓存的机会   命中率非常低 - 从外部域下载   有可能不是一次,而是三次往返(DNS查找,   TCP连接和HTTP GET)。&#34;

答案 3 :(得分:12)

最大的好处是来自缓存。理论上说,如果访问者访问了一个加载他们的JavaScript库的网站,例如来自Google CDN的jQuery,那么当他们访问您的网站时,该库已经在该用户的浏览器缓存中,不必再次下载。这在理论上听起来很棒。

这里和其他地方分享的好处都是理论上的。刚刚对使用CDN进行了深入分析,是否能提供预期的性能优势。 http://www.root777.com/appdev/does-using-google-libraries-api-cdn-give-you-performance-benefits

答案 4 :(得分:7)

不让谷歌托管您的jQuery的一个主要原因是许多人没有想到的是,如果您在中国,它将无法下载。它与许多其他脚本,字体等一起被封锁......由谷歌CDN托管。如果您需要接触中国受众,最好始终使用托管在您自己服务器上的后备广告。 Google APIS Blocked in China

答案 5 :(得分:0)

这里有一些很好的答案&#34;为什么你应该......&#34;和&#34;为什么你不应该......&#34;

如果您确实想要从CDN加载jQuery,我只想添加Google的替代品列表。

但总而言之,您基本上可以提高整体网站/应用程序的性能。

答案 6 :(得分:0)

使用Service Worker来签名CDN,您可以在客户端生命周期中一次下载CDN,而不是每次更新代码时都可以下载。