使用Google jQuery托管库有什么真正可触及的好处?还是我们应该将其下载到我们的服务器上?

您对此有何看法?

评论

一个简单的谷歌搜索将提供答案...

#1 楼

使用外部CDN(例如Google)来托管jQuery有两个主要好处:



它更快。它肯定会比您的站点快,并且可能比您自己设置的任何CDN都要快。
它可能已被缓存。许多网站也都在Google的CDN上引用了jQuery,因此,如果他们在您的网站之前访问过另一个网站,甚至都不需要下载它。

潜在的缺点:


域名可能被阻止(在中国这样的地方很常见)。您可以通过本地回退来解决此问题(有关方法,请参见此处)。
版本号的分散度很高,因此,您网站的访问者可能会缓存许多不同的版本,但没有缓存您引用的版本(请参见此处)了解一些最新统计信息)。不过,这只是在首页加载时出现的问题。


评论


您可以发布有关如何设置本地后备广告的参考吗?

–斯蒂芬·奥斯特米勒(Stephen Ostermiller)
2014年4月2日在14:32

正如Zistolen之前指出的,另一个好处是它将与您的网站并行下载其他资产。您可能还希望将其添加到这个其他很好的答案中。

– nathangiesbrecht
2014年4月2日14:47

有点误导。浏览器可以并行下载资产,而不管它们在何处托管,但是它们一次要从同一主机下载的内容数量是有限制的。

–蒂姆喷泉
2014年4月2日15:11



我跳过了它,说实话,它既不在这里也不在那里-该文件可以并行下载,但它也是一个附加的DNS查找。另外,无论是哪种时间差异都可以忽略不计。

–心怀不满的山羊
2014年4月2日在15:57

很公平。但是在快速连接上,因为可以使用更多的“管道”,这是否可以导致更快的总加载时间?

– nathangiesbrecht
2014年4月2日,16:06

#2 楼

另一个缺点:

使用CDN可使CDN的运营商跟踪网站访问者。这就是为什么他们不花钱的原因。

评论


跟踪但不跟踪访问者:jquery自身和google的jquery CDN都托管在未设置或使用cookie的域上(这可能也是性能优化),并且请求中没有真正可识别的信息。 CDN提供程序可以了解有关IP地址以及有关用户代理字符串和引荐来源网址的一些统计信息。这可能很有价值,但它本身并不会带来巨大的隐私风险(如果这些记录与另一个数据库相关联(例如,在相同时间投放的个性化广告,则可能是一种跟踪手段))。

–Eamon Nerbonne
2014年4月5日在11:10



我认为将数据与其他数据库相关联是理所当然的(对于Google而言),因为几乎每个人都一直在使用google进行搜索。 Google字体也是如此:我最近尝试将字体自托管在服务器上,但是发现很难做到这一点。 Google不会禁止它(开放源代码),但是它们不会以即用型的方式为您提供文件:您可以自己编译它们(但没有makefile),也可以伪造对文件的请求。用于正常交付它们的服务器。两者对于非技术人员都不可行。

–Jost
14-4-5在12:04



也许。我没有任何内部消息,因此很难确定。我敢肯定,这会是错误的,并且会有很大的差距,但是:我使用互联网的大多数地方都是经过NAT转换的,而且有些地方有很多用户使用相似的机器(可能是相同的UA字符串)-无法知道哪个请求来自谁。当然,使用adsense和社交共享按钮时,它们可能几乎总是具有更可靠的方式,因此我可以想象它们不会打扰。至于字体-我已经下载了几次,所以我不太理解您所说的难是什么意思?

–Eamon Nerbonne
2014年4月6日21:50

明确地说:我假设您进行的大多数网站访问都可以并且将会被大型统计收集者通过社交共享按钮(相当普遍)和广告来跟踪,这些信息几乎无处不在。因此,我只是想知道来自大量缓存的JS请求的可能具有误导性的信息有多有价值-我敢打赌,不是非常,因此,我认为他们不会打扰尝试使用CDN服务的JS来亲自识别人员。

–Eamon Nerbonne
2014年4月6日在21:53



它不像人们想象的那样被缓存-当通过使用Google偏爱的方式通过将CSS链接插入fonts.googleapis.com来嵌入字体时,每个页面视图都会打开到google的连接(您可以在Firebug中看到它们)。不管是否缓存都没关系。关于下载:您能指出我一个可以下载高质量eot,woff,ttf和svg格式的字体的地方吗(谷歌提供的相同版本,没有外部转换器)?

–Jost
2014年4月6日在22:36



#3 楼

假设您只在乎性能,那么使用CDN在多个服务器之间分拆依赖关系实质上就是在带宽和延迟之间进行权衡。它在本地,但是将其与其他本地请求连接在一起-通常没有充分的理由不进行连接。

如果带宽无限,那么最好不要进行分片,因为那样会与最慢的服务一样慢-由于延迟不是完全可以预测的,因此即使有足够的服务,延迟也不够快,您只需要一点运气就可以导致缓慢的页面加载。

如果延迟为0,则将负载分散到许多服务器上可以通过利用许多服务器来提高带宽(这无济于事,因为带宽限制可能位于客户端附近,而不是服务器附近),但更重要的是,它可以减少传输的数据量通过提高缓存的有效性来实现。

这取决于您的情况,但我通常希望延迟比带宽更重要,除非您的脚本异常庞大(不是jquery)。到那时,将jquery作为串联本地文件的一部分托管通常会更快。

不本地托管的原因例如当您为带宽付费或在某个速度较慢的服务器上托管时(与客户端的连接出现瓶颈,而不是客户端的瓶颈),或者您知道客户端的带宽会非常低(低端DSL或调制解调器) ,例如-移动设备往往比带宽问题更多的延迟问题),或者您的客户为带宽支付了费用(例如,移动设备),而脚本是其中的一个非常明显的部分,即次要的缓存胜出是不可能的。 br />无论如何:更为相关的是您是否首先了解了基础知识;适当的缓存头,连接,缩小和gzipping(最好具有高压缩率)。这就是症结所在:如果您不这样做,那么至少CDN会成功,这样才是成功的... ,那么尽管CDN的性能更好,但本地提供的小脚本比CDN更快-但前提是您已完成作业,可能不在首页加载中,并且此规则肯定有例外。

评论


顺便说一句,仅使用一个请求就可以赢得一些字节节省:仅标头就达到了将近1kb,在28k的有效载荷上也不算什么。 gzip在更多上下文中效果更好,这又节省了0.5k。 TCP,DNS,HTTPS开销都可以轻松地在此处或此处添加KB,更糟糕的是,可以添加RTT。因此,对于像这样的小文件,CDN并没有您想象的那么快。

–Eamon Nerbonne
2014年4月2日在23:19

#4 楼

使用Google的jQuery托管库可以更快地加载您的页面。
实际上,该库是在页面同时加载的,而不是之后加载的。

评论


但是它如何影响页面加载?

–狮子座
14年4月2日在14:12

加载页面时也会加载本地库-在这两种情况下,当(现代)浏览器看到触发下载的代码段时(通常是在下载整个文档之前),资产的下载就会开始。请参阅此Firebug屏幕截图以获取示例

–Jost
2014年4月3日,0:31