在Google上托管jQuery的任何问题/缺点?

我听说有些人在访问他们的站点时遇到问题,因为他们的公司防火墙不喜欢站点从其他站点获取代码,即跨站点脚本,因此从谷歌获取jQuery?

有没有人遇到这样的问题?

一个问题是谷歌的服务器可以并且确实在最糟糕的时候下降 。 在回答“ 你最不舒服的编程经历是什么? ”的问题时,我回答说:

我向一组潜在用户展示了我的团队的新Web应用程序。 我花了几分钟时间谈论Google Visualization API可以做的所有很酷的事情,因为我们在应用程序中大量使用它。 为了演示,我决定绘制我们之前收集的几组数据。 它的目的是传达这样的信息:“看看它有多容易!普通人可以使用我们的产品制作漂亮的图表。”

幸运的是,承载使用Visualization API所必需的Javascript文件的Google服务器决定在我的演示期间中途停止工作 。 我坐在椅子上,盯着屏幕,喃喃自语“但……但他们是谷歌……他们的服务器无法下降”。 团队试图嘲笑它,但是当时每个人都意识到,当真正重要的时候,依赖任何第三方(甚至像谷歌这样大的第三方)是多么危险。

我知道这似乎不太可能,但除非你别无选择,否则我建议不要在第三方服务器上托管重要文件,即使它们是Google的服务器。 让客户抱怨停电很糟糕。 让客户抱怨不是你的错,而你无法解决的停电更糟糕

我认为通过托管谷歌你的意思是AJAX Libraries API ? 我能看到的优点是:

  1. 由于JS来自Google的CDN,因此您可以节省网站带宽
  2. 您可能会看到更好的响应速度和速度,因为内容来自Google的分布式CDN,而不是您的服务器。
  3. 如果用户之前访问过另一个使用Google托管其JS库的网站,则用户的浏览器可能已经将其缓存。
  4. Google会针对您正在运行的库版本应用最新的错误修复程序和安全修补程序。 与其他人声称的相反,他们不会自动升级到最新版本。 例如,如果您指定要Mootools 1.11,除非您专门更改脚本包含调用以请求它,否则您将不会获得1.2或更高版本。 但是他们将应用特定于该版本的修补程序。

缺点:

  1. 就像你提到的那样,一些更热心的安全工具和产品可能会对包含来自不同主机的脚本产生问题。 我不知道这是一个多么广泛的问题,但值得研究。
  2. 它可能会向页面加载添加另一个DNS查找。
  3. 谷歌承诺“无限期”托管每个版本的图书馆,你希望他们的意思。 但是财富和政策会发生变化,如果停止托管服务,您可能会发现自己不得不重新访问许多网站来修复他们的JS。
  4. 您依赖第三方来托管您的部分内容。 显然你会期望谷歌的正常运行时间非常好,但是如果他们确实有问题,你可能需要向客户解释为什么他们的网站不能正常工作只是因为谷歌存在网络问题。
  5. Google会托管每个库的完整版本,但有些像Mootools可以让您创建仅包含所需组件的自定义版本。 因此,Google版本可能比您需要的更加饱满。
  6. 您无法自定义或更改库。 对库进行下游更改是一个毛茸茸的命题,但如果你遇到困难,它可能是最简单的选择。 将库托管在外部会增加额外的复杂性,因为您必须切换到内部副本。
  7. 错误修复确实适用于您选择的版本,因此如果您以某种方式依赖于错误行为,这可能会导致问题。 据推测,图书馆作者会对潜在的突破性变化非常谨慎,但墨菲定律会在某处出现问题。

刚刚开始使用jQuery,并且只使用本地副本,我无法评论跨站点问题。

由于您的问题标题询问在Google上托管此问题是否存在任何不利之处,因此最明显的答案是他们可能随时升级其版本,可能会破坏您的代码或导致意外的副作用。 更新:Guillaume评论说,当你主持时,你总是链接到特定版本的jQuery。 我不知道 – 谢谢。

最后,如果您所在的国家/地区互联网链接偶尔会丢失,或者您开发内部网并且互联网链接丢失,您可能会发现本地用户因为无法访问Google而出现错误。

离线使用的一大优势。 我在火车上写了大量没有移动数据的代码 – 所以在我的web项目中使用js 非常有用。 它还使我能够完全控制并对变更管理充满信心。

我不知道,但我喜欢控制自己:),我总是将js上传到网络服务器

您网站中最重的用户通常是重复访问者,他们无论如何都会将您本地托管的.js文件缓存,因此他们只会在首次访问网站时占用带宽。

  1. 我的网站的游客通常会重复访问者吗? (与首次访客相对)
  2. 我的网站访问者是否可能拥有快速网络连接?
  3. 我是否可以轻松地在我的网站分配的带宽容量内?

每个“是”答案都是避免依赖Google外部托管的Javascript的原因。

例如:如果您正在运行像StackOverflow这样的网站,那么您的访问者通常是具有快速连接和缓存的技术人员,他们在今天早上检查StackOverflow的其他五十次完全填充,从其他地方托管您的Javascript的收益是会变得非常小。

但是如果你在地下室的256kbps DSL线路上为Kuala Lumpor的老年人运营一个网站,那么如果你将这些JS文件卸载到Google,你的访问者会看到一些不错的收益!

某些国家/地区可能会通过其DNS服务器阻止全国范围的Google域名访问。

让Google托管您的jQuery有许多缺点。 像其他用户指出的那样:

  • 谷歌可以升级他们的副本
  • 谷歌可能会崩溃
  • 最终用户可能无法访问Google

回答这个问题的一个更好的方法可能是问:让Google托管你的jQuery有什么好处? 仅在特定情况下,我才会使用跨站点托管来实现依赖项。 即:

  • 谷歌的服务器可能比你的服务器更接近最终用户
  • 用户更有可能在本地缓存Google版本(除非他们定期访问)

关于带宽的所有这些评论甚至没有人触及缓存。 托管网站时,如果您没有正确地告诉最终用户缓存文件以及缓存文件的时间长短,那么您需要过多的带宽使用和导致的问题。

我的回答很简单。 自己托管,将其检入您的源存储库并使用非常长的到期标头正确地提供它。 这样每个人都会一次下载这些东西。 此外,我真的不能忍受这样的想法:实际上不是我的服务器通过网络发送的每个文件或告诉客户端下载。