为啥从 Google 的 AJAX 库 API 加载 JS 框架很重要?
Posted
技术标签:
【中文标题】为啥从 Google 的 AJAX 库 API 加载 JS 框架很重要?【英文标题】:Why is it important to load a JS framework from Google's AJAX Libraries API?为什么从 Google 的 AJAX 库 API 加载 JS 框架很重要? 【发布时间】:2010-12-23 18:14:09 【问题描述】:我记得在某处读到,从 Google 的 AJAX 库 API 加载 JS 框架比使用本地托管的框架要好得多。
这意味着,而不是:
<script src="jquery.js"></script>
您从 Google 加载框架:
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
我认为优势主要在于缓存,但我不确定。
有人可以向我解释为什么从 Google 加载框架而不是在本地托管它们更好的原因吗?
【问题讨论】:
我曾经问过自己同样的问题。让我们看看 SO 书呆子怎么说。 ***.com/questions/936399/…已经是一个很好的问题了 【参考方案1】:让 Google 托管您的 javascript 库有利有弊。
优点:
Google 的 CDN 比你的好很多 Google 收集的有关您的网站和使用情况的大量数据 用户可能从其他网站缓存了库缺点:
1 次额外的 DNS 查找 Google 收集的有关您的网站和使用情况的大量数据 Google 可能已关闭或被阻止(唯一但可能发生,即某些疯狂的公司政策) 用户浏览器必须建立 1 个新连接 在 Safari 中,jquery 文件不提供 gzip 格式根据我的经验,我在本地托管方面取得了出色的成绩,因为我将 Google 的 JQuery 库与我的其他 javascript 代码统一起来,将其压缩并在统一的 javascript 文件中获得了很高的压缩率。这样,浏览器使用已经打开的连接来下载包含所有内容的“小”文件。
【讨论】:
缺点 4 和 5 根本不特定于 CDN。并且关于并行性的重点不是问题:有序脚本评估由浏览器处理,无论是使用 Google 的 CDN 还是自己托管。 好的,删除了并行度。 Con 4 是关于用户性能的,而 con 5 是针对 Google 的 CDN 的,这就是问题所在。 除非您将 JS 编译到一个文件中,否则“用户浏览器必须建立的 1 个新连接”无论您从何处提供服务都是一个问题。 只是将“在本地提供 JQuery”与“在外部托管”进行比较。我的假设基于 Yahoo 的 YSlow 和 Google 的 Page Speed 中显示的结果。根据我的经验,在这两个分析应用程序中,在本地提供它给我的分数更高。【参考方案2】:为什么只有谷歌?微软也推出了 CDN,这些天我链接到 MS CDN 而不是 Google 来获取 Jquery。
如果我将您的问题改写为“从 CDN 链接有什么优势?”,我会这样回答。
-
CDN 将有许多服务器,并且可能有一个位置较近且服务比您的服务器更好(更快),但这并不重要,因为通常 JQuery 将是您数据的一小部分。
就是这样。我想不出任何其他优势。没有。纳达。零。
事实上,我可以想到一个缺点,即您对自己的内容的控制力会稍差。
不要认为大公司会慷慨地用他们的钱给你免费带宽。控制您的网站是他们的事。
【讨论】:
感谢提及微软新CDN;不知道。 @Cyril Gupta - 我认为 Justin Johnson 的意思是,您能否提供任何理由说明为什么链接到 Microsoft 比链接到 Google 更好? @Justin - 除了它像谷歌那样存在之外没有什么特别的原因,因为它在那里应该有人链接到它。未使用的东西往往会随风而去。【参考方案3】:归结为足迹:Google 拥有一组分布式网络位置,从而确保向几乎所有地方提供低延迟交付。
因此,如果您尽可能多地从 Google 提供服务,您的客户QoE(体验质量)将会得到改善。
客户关心这一点,因为他们获得网页的速度越快,完成的工作就越多。
Google 很在意这一点,因为客户获取网页的速度越快,他们每天可以提供的服务就越多,因此他们赚的 钱$ 也就越多(当然是来自广告)。 p>
【讨论】:
【参考方案4】:另一个网站很有可能也会使用来自 Google 服务器的相同 js 文件,因此该文件已被您的浏览器缓存,无需为您的网站再次下载。
查看this 文章了解其他一些好处。
【讨论】:
+1 如果每个人都从 google 获取 jquery,那么无论您访问什么站点,它都会被缓存! 我不知道你们的情况,但我现在要去更改我所有的网站。【参考方案5】:首先,这意味着负载在 Google 的服务器上,而不是您自己的服务器上,这将为您节省服务器处理时间和带宽。其次,对于绝大多数互联网用户而言,Google 的服务器很可能比您自己的服务器更快。
此外,从 Google 的角度来看,它可以让他们获得更多关于人们如何使用互联网及其 API 的数据。
ETA:另外,如果 Google 更新他们的 API,这意味着您将始终使用最新版本。这可能是也可能不是一件好事(错误修复与向后兼容性)。
【讨论】:
我认为 Google 了解人们如何使用互联网的观点非常有效。 关于 Google 更新其 API,如果您使用特定版本(如我在帖子中发布的),例如 1.3.2,除非您自己手动更新链接,否则不会影响您。以上是关于为啥从 Google 的 AJAX 库 API 加载 JS 框架很重要?的主要内容,如果未能解决你的问题,请参考以下文章
PHP 从Wordpress中的Google AJAX Libraries API加载jQuery
对 Google Maps API 的 AJAX 请求停止工作