这对于某些人可能是显而易见的,但是我一直在想:为什么我应该依靠Google的服务器来为我的网站托管jQuery?
仅仅是因为这样加载速度更快吗?
这对于某些人可能是显而易见的,但是我一直在想:为什么我应该依靠Google的服务器来为我的网站托管jQuery?
仅仅是因为这样加载速度更快吗?
Answers:
这是因为:
有几种方案时,你可能不希望使用jQuery来自谷歌的CDN:
在构建Intranet应用程序时,其中Web服务器与客户端托管在同一网络上。 如果您使用Google的CDN jQuery,则将拨打互联网而不是本地网络上的Web服务器。这会增加组织的带宽,并且速度较慢。
当您想离线运行应用程序时。(与第一个问题完全相关)如果您需要在开发环境中工作(例如,使用Bower进行管理),则可能需要能够在没有任何互联网连接的情况下使应用程序正常工作(即:在火车中:)
通过需要jQuery的SSL提供页面时。 您应该通过SSL以及页面提供JavaScript,以避免安全问题和警告。
src="//ajax.googleapis.com/..."
,起作用。
该研究由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
许多人没有想到的一个不让Google托管您的jQuery的主要原因是,如果您在中国,它将无法下载。它与Google CDN托管的许多其他脚本,字体等一起被阻止。如果需要吸引中国观众,最好始终使用托管在自己服务器上的后备服务器。 Google APIS在中国被封锁
这里对“为什么应该...”和“为什么不应该...”给出了一些好的答案。
如果您确实想从CDN加载jQuery,我只是想向Google添加替代列表。
但总而言之,您基本上是在改善整体网站/应用程序的性能。
如果使用带有Service Worker的Usign CDN,则可以在客户端生命周期中下载一次CDN,而不必每次更新代码时都可以下载。