这对于某些人来说可能是显而易见的,但是我一直在想:为什么我应该依靠Google的服务器来为我的网站托管jQuery?

仅仅是因为这样加载速度更快吗?

评论

相关:stackoverflow.com/questions/547384/…

没有人提到Google对其JS文件进行热链接的政策(通常不赞成使用热链接),因此这里是Google提到可以的URL,以及有关它们托管的库的更多信息:code.google.com/apis/ajaxlibs/ documentation / index.html

是否应该复制到JS库的Google API的云链接?

当访问另一个站点时,许多用户已经从Google或Microsoft下载了jQuery。因此,当他们访问您的网站时,将从缓存中加载该文件,从而缩短了加载时间

您不应该使用Microsoft或Google。使用MaxCDN。缓存命中的可能性更大,这是此处最重要的Blog.jquery.com/2014/01/14/…

#1 楼

这是因为:



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


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


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


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


它可以确保用户在地理位置上得到密切的响应。 (Google在世界各地都有服务器,这进一步减少了延迟。)

(可选)它们将自动使您的脚本保持最新。 (如果您想“坐下来,可以随时使用它们提供的任何脚本的最新版本。这些脚本可以修复安全漏洞,但通常只会破坏您的内容。)


评论


我喜欢您不断提出更多理由的方式。 +1。

–Matchu
2010-2-1在22:10

6. Google的服务器可能比您的服务器更快!我不确定第3点是否真的有意义,因为任何人都可以像Google一样缩小规模。 +1是个不错的答案:)

– Paul Creasey
2010-2-1在22:10



我觉得#3可能与gzip等有更多关系,因为jQuery已经给出了缩小版本。

–Matchu
2010-2-1在22:12

上帝每个人都在攻击我,我只是提出我的想法,被接受了,哈哈。

–Farshad
2010-2-1在22:19

@farshad:不攻击您,攻击被接受的答案,该答案不及下一个答案。这就是社区问答的方式。下次尝试更专业地设置答案格式,并将对问题的批评仅限于有用的,建设性的类型。

–乔尔
2010-2-1 22:34

#2 楼

在某些情况下,您可能不想使用Google的CDN中的jQuery:


在构建承载Web服务器的Intranet
应用程序时

客户端相同的网络。如果您使用Google的CDN
jQuery,则将拨打Internet上的电话,而不是本地网络上的Web服务器。这
增加了组织的带宽,并且速度较慢。
要脱机运行应用程序时。 (与第一个问题相当相关)如果您需要在开发环境中工作(例如,使用Bower进行管理),则可能需要能够在没有任何Internet连接的情况下使应用程序正常工作(即:在火车中:)
需要定制时。例如,如果您使用Grunt来构建库以仅使用某些模块或设置AMD名称,则当您通过SSL提供需要jQuery的页面时。您应该
将SSL over SSL以及页面保存下来,以避免安全性
问题和警告。

此外,Microsoft在其CDN上托管jQuery。与使用Google的托管jQuery相比,这是另一种选择。

评论


仅供参考,您可以使用Google的服务器提供SSL版本的托管JavaScript库。 ajax.googleapis.com/ajax/libs/jquery/1.4.1/jquery.min.js可以运行。

–亚伦·瓦格纳(Aaron Wagner)
2010年2月1日23:16

很高兴知道,亚伦。谢谢。

–兰斯·费舍尔
2010-2-1在23:33

+1(提及微软)。 Google获得了太多的imo信用。

–是Barry
2012年9月21日在7:32

仅供参考:与方案有关的超链接,例如src =“ // ajax.googleapis.com / ...”,也可以使用。

–John Gietzen
13年4月7日在0:17

还要考虑cndjs

–布莱斯
13年11月15日在7:35

#3 楼

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)的潜力。“


评论


HTTP2和SPDY不再适用。今天,您可以将所有外部资源托管在CDN之类的CDNjs.com之类的文件中,并且所有文件都将使用相同的请求进行下载。那基本上与连接相同。

–里卡多·波罗(Ricardo Polo Jaramillo)
16年4月12日在5:46

#4 楼

最大的好处就是缓存。从理论上讲,如果访问者访问的网站正在加载其JavaScript库,例如从Google CDN中搜索jQuery,那么当他们访问您的网站时,该库已经在该用户的浏览器缓存中,而不必再次下载。从理论上讲,这听起来不错。

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

评论


这个答案被严重低估了。它为上述“专业”接受的答案提供了同样有效的“缺点”。

–托马斯·瓦纳(Thomas Wana)
13-10-21在12:11

@ user239558如果研究的作者实际上使用了CDN,则链接不会消失;-)错误是:[function.require]:无法打开流:/ homepages / 41 / d222999437中没有此类文件或目录/htdocs/wp-content/themes/prose/functions.php

– jplandrain
2014-03-25 10:42



这篇文章没有经过深思熟虑。它说,最不常见的jQuery库由Google CDN在所有页面的0.5%上提供。在一般的浏览会话中,我访问了大量页面,尤其是那些指向网站的小链接,例如托管该页面的链接。或博客网站。一周之后,我每天轻松地访问30个独特的网站,而没有缓存的机会非常渺茫。尽管可能不会为所有用户缓存该缓存,但是广泛使用Internet的人们几乎总是对其进行缓存,因为他们总共访问了超过1个唯一域。

– Aidiakapi
2014年6月9日下午0:27

#5 楼

许多人没有想到的一个不让Google托管您的jQuery的主要原因是,如果您在中国,它将无法下载。它与Google CDN托管的许多其他脚本,字体等一起被阻止。如果需要吸引中国观众,则最好始终使用托管在您自己的服务器上的后备广告。
在中国禁止使用Google APIS

评论


我不同意@tmthydvnprt。这个问题是有根据的,所以这就是大多数错误的开始所在,但这确实回答了这个问题。

–再见StackExchange
16年7月31日在19:20

我来这里也是一样。如果用户在中国,那么来自Google的大部分内容都会被强大的防火墙所阻止。但是,由于在中国很多人都在使用VPN服务,因此这可能不是问题,而且您可能永远也不想瞄准中国市场。

–贾斯汀
17年1月17日在3:22



#6 楼

这里有一些关于“为什么应该...”和“为什么不应该...”的很好的答案。

如果您确实想从中加载jQuery,我只是想向Google添加替代列表CDN。


CDN JS-https://cdnjs.com/libraries/jquery

Microsoft-https://docs.microsoft.com/en -us / aspnet / ajax / cdn / overview#jQuery_Releases_on_the_CDN_0] 2

jsDelivr-https://www.jsdelivr.com/package/npm/jquery

code.jquery .com(StackPath)-https://code.jquery.com/

Google-https://developers.google.com/speed/libraries/#jquery


但总而言之,您基本上是在改善整体网站/应用程序的性能。

#7 楼

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