用于 jQuery 的微软 CDN 还是用于 Google CDN?

用哪个 CDN 链接到 jquery 文件或任何 javascript 文件真的有关系吗。一个潜在地比另一个快吗?还有哪些因素会影响您决定使用 cdn?我知道微软、雅虎和谷歌现在都有 CDN。

65287 次浏览

这可能无关紧要,但是您可以通过一些 A/B 测试来验证这一点。将一半流量发送到一个 CDN,另一半发送到另一个 CDN,并设置一些分析来度量响应。我认为更重要的是能够轻松地切换,以防其中一个出现严重的不可用性问题。

根据评论更新:

简短的说法: 这并不重要,但可能取决于他们主持的是什么。它们都托管不同的东西: Google 不托管 jQuery。验证一下,微软没有托管 jQuery-UI,自从2016年他们就有了! !微软提供的脚本本来可以通过 ScriptResource.axd和更容易的集成(例如 使用 ASP.Net 4.0的 ScriptManager)来提供服务。

重要提示: 如果您正在构建一个内部网应用程序,请远离 CDN 方法。不管是谁托管它,除非你在一个内部 非常过载的服务器上,没有 CDN 会给你比本地100mb/1GB 以太网更好的性能。如果您为严格的内部应用程序使用 CDN,那么您就是 影响表现正确设置缓存过期标头和忽略 CDN 存在于仅内部网场景中。

任何一个被阻止的可能性似乎大致相等,几乎为零。我曾经参与过一些不符合事实的合同,但这似乎是一个例外。而且,自从最初发布这个答案以来,它周围的环境发生了很大的变化,微软 CDN 已经取得了很大的进步。

我目前正在进行的项目使用了两个 CDN,它们对我们的解决方案最有效。这其中有几个因素。使用 旧的浏览器的用户仍然可能在每个域 根据 HTTP 规范的建议中同时发出2个请求。对于任何运行 支持流水线(每个当前浏览器)的人来说,这都不是问题,但是基于另一个因素,我们正在消除这个限制,至少在 javascript 方面是这样。

我们正在使用的谷歌 CDN:

我们正在使用的微软 CDN:

我们的服务器:

  • V = 2.2.0.6190(主要。次要。迭代。变更集)

由于构建过程的一部分是合并和缩小所有定制的 javascript,因此我们通过一个定制的脚本管理器来完成这项工作,该管理器包括这些脚本的发布或调试(非缩小)版本,具体取决于构建。由于 Google 不提供 jQuery 验证包,这可能是一个缺点。MVC 在他们的2.0版本中包含/使用了这个,所以你可以完全依靠微软的 CDN 来满足你的所有需求,并通过 ScriptManager 自动完成

唯一的其他参数将是 DNS 时间,这是一个成本在页面加载速度方面。平均数:仅仅是因为它被使用的更多(它已经存在了很长时间) ajax.googleapis.com很可能比 ajax.microsoft.com更早被 DNS 返回,仅仅是因为本地 DNS 服务器更有可能获得对它的请求(这是第一个区域罚款用户)。这是一个 非常次要的事情,只有在性能非常重要的情况下才应该考虑,甚至可以精确到毫秒。
(是的: 我意识到这一点与我使用两个 CDN 相反,但是在我们的例子中,DNS 时间被发生在 javascript/阻塞上的等待时间所掩盖)

最后,如果您还没有看过它,那么最好的工具之一就是 纵火犯,以及它的一些插件: 呼叫速度YSlow。如果您使用 CDN,但是由于没有缓存头,您的页面每次都请求图像,那么您就错过了容易摘到的果实。Firebug 的 Net 面板可以快速分析页面加载时间,Page Speed/YSlow 可以提供一些很好的建议。

我认为这取决于你的目标受众在哪里。您可以使用 alertra.com 来检查来自世界各地的 CDN 速度。

我两个都要!

由于 Google Jquery 托管服务已经存在很长时间了,相比微软的托管服务,人们已经拥有它的可能性要高得多,所以我会先拥有它。

就我个人而言,我会用这样的东西-

if (typeof jQuery == 'undefined') {
// jQuery is not loaded


document.write("<scr" + "ipt type=\"text/javascript\" src=\"http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js\"></scr" + "ipt>");
}
} else {
// jQuery is loaded
}

(不知道这100% 的工作,但我只是写的想法,而不是例子-这引用了谷歌托管的 Jquery,而不是微软的一个,因为我找不到链接)

您绝对应该使用 GoogleCDN for jQuery (这来自于一个以微软为中心的开发人员)。

这只是简单的统计数据。那些考虑为 jQuery 使用 MS CDN 的人将永远是少数。有太多使用 jQuery 的非 MS 开发人员会使用 Google 的,而不会考虑使用微软的。自 使用公共 CDN 的一个重大胜利是改进了缓存以来,多个 CDN 之间的分裂使用降低了获得这种好处的潜力。

谷歌将发送一个用他们自己的软件缩小的 jQuery 版本给你,这个版本比 MS Go 为谷歌提供的标准缩小版本要轻6kb。

需要考虑的一个小问题是,两家公司提供的“额外”库略有不同:

根据您的需要,这可能是相关的。

我知道我有点晚了,但这是我在生产环境中使用的代码。我从来没有问题,但你的英里数可能会有所不同。确保您在自己的环境中测试它。

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript">
!window.jQuery && document.write('<script src="/scripts/jquery-1.4.2.min.js"><\/script>')
</script>
<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.4/jquery-ui.min.js" type="text/javascript"></script>
<script type="text/javascript">
!window.jQuery.ui && document.write('<script src="/scripts/jquery-ui-1.8.2.min.js"><\/script>')
</script>

我的回答与其他人有点不同,如果你需要 jquery 验证器,我会选择微软,如果你使用 jquery,几乎每个人都需要。

Microsoft CDN http 连接是 Keep-Alive,当您请求多个项目时,这是一个很大的优势。

因此,如果你需要 jquery 验证然后使用微软 CDN,即使你需要 jquery ui 使用微软,因为谷歌没有保持活跃,所以每个请求都是自己的。所以这样的混合是有益的。如果你只是使用微软的验证器,那么你正在做每个请求与谷歌服务器单独的连接。

今年夏天,微软说它没有提供用户界面,这是不正确的(不再)。可以在 http://www.asp.net/ajaxlibrary/cdn.ashx下载。

还应该注意的是,由于 ajax.microsoft.com 是 microsoft.com 请求的子域,所以发送所有 microsoft.com cookie 会增加获取文件所需的总时间。

此外, ajax.microsoft.com 使用默认的 IIS7压缩,这比其他 web 服务器使用的标准压缩要差。

Http://ajax.microsoft.com/ajax/jquery/jquery-1.4.4.min.js -33.4 k

Http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js -26.5 k

另外,正如其他人提到的谷歌 CDN 是更流行的方式,这大大增加了一个文件被缓存的机会。

所以我强烈推荐使用谷歌。

另外一个需要考虑的问题是,如果你的网站是 SSL 的,而且你需要支持 Android 2.1(或更早版本) ,那么 HTTPS 版本的微软 CDN 的 SSL 证书将会导致这些版本的 Android 浏览器崩溃。这不是微软的“错”,因为 SSL 证书在技术上是有效的,而且缺陷在于 Android 的 SSL 实现... ... 但是它仍然会让你的站点崩溃。

Google CDN 上的 SSL 证书不会与这个特定问题发生冲突(与证书的“证书主题 Alt 名称”相关)。

因此,对于 SSL + Android 2.1支持,请使用 Google CDN。

另外,在使用谷歌 CDN 时,也要考虑到有时人们会出现 ajax.googelapis.com 之类的拼写错误。这可能会导致非常严重的 xss (跨网站脚本)攻击。我实际上已经通过注册 googlapis.com 的输入错误测试过了,并很快发现自己正在为 javascript、 map、 css 等服务请求。

我发电子邮件给谷歌,要求他们注册类似的 CDN 输入错误的网址,但没有得到回应。这可能是不依赖 CDN 的真正原因,因为有潜在的危险攻击者在等待输入错误请求,并且可以很容易地使用 xss 有效负载返回 jquery 等。

谢谢你

一个潜在地比另一个快吗?

实际上我自己对此很好奇,所以我使用下面的每一项设置了一个 jsbin 测试页面,然后通过 webpagetest.org 的可视化比较工具运行它。我测试了:

  1. Ajax.googleapis.com
  2. Code.jquery.com
  3. Ajax.aspnetcdn.com
  4. Cdnjs.cloudflare.com

谁是最快的: Code.jquery.com在两个测试中都领先0.1秒

谁跑得最慢: 第一次测试 Ajax.aspnetcdn.com落后0.7秒,第二次测试 Ajax.googleapis.com落后1秒

下面是 第一次测试(每个测试3次) :

视频: < a href = “ http://www.webpagetest.org/Video/view.php? id = 121019 _ 16c5e25eff2937f63cc1714ed1eac814794e62b3”rel = “ noReferrer”> http://www.webpagetest.org/Video/view.php?id=121019_16c5e25eff2937f63cc1714ed1eac814794e62b3

报告: < a href = “ http://www.webpagetest.org/video/compare.php? test = 121019 _ D2 _ KF0,121019 _ 9Q _ KF1,121019 _ WW _ KF2,121019 _ 9K _ KF3”rel = “ noReferrer”> http://www.webpagetest.org/video/compare.php?tests=121019_d2_kf0,121019_9q_kf1,121019_ww_kf2,121019_9k_kf3

这是 第二次测试(每个3个) :

视频: < a href = “ http://www.webpagetest.org/Video/view.php? id = 121019 _ a7b351f706cad2c25664fe7ef349371f17c4e74”rel = “ noReferrer”> http://www.webpagetest.org/Video/view.php?id=121019_a7b351f706cad2c25664fee7ef349371f17c4e74

报告: < a href = “ http://www.webpagetest.org/video/compare.php? test = 121019 _ MP _ KJN,121019 _ S6 _ KJP,121019 _ V9 _ KJQ,121019 _ VY _ KJR”rel = “ noReferrer”> http://www.webpagetest.org/video/compare.php?tests=121019_mp_kjn,121019_s6_kjp,121019_v9_kjq,121019_vy_kjr

正如 王国所说:

当有人访问你的网站,如果他们已经访问了另一个 站点在同一 CDN 上使用相同的 jQuery 文件时,该文件将 已被缓存,根本不需要下载。它不能 再快点。

这意味着最广泛使用的 CDN 将有机会 侧,这可以支付您的网站。

关于业绩的几点意见: 谷歌的 CDN 一直是北美和欧洲三家公司中速度最慢的。在欧洲,微软的 CDN 是最快的。

根据应用程序的目标行业,您可能不希望使用由其他组织管理的 CDN。它经常引起关于合规、隐私和保密性的问题。

例如,当您在一个安全的应用程序中包含 GoogleAnalytics 时,浏览器仍然将当前 URL 作为“引用者”头发送。任何标识符(例如会话 ID 或秘密令牌)都可能出现在它们的日志中。例如,如果192.0.2.5的客户机 IP 引用 https://healthsystem.example/condition/impotence,那么您可以推断出被认为是相当私有的信息。

其他情况包括后果信息,如帐户号码、社会安全号码或 URL 中的会话信息。这种类型的数据不应该出现在 URL 中,因为它可以在应用程序之外使用。

你可能信任谷歌、微软或雅虎,但你的用户可能不信任。

对于金融、法律和医疗等行业,您可能希望在供应商(例如 Akamai)的帮助下建立自己的 CDN,您可以与其签署 BAA 协议。

我建议你根据目标用户的大致位置来使用。

如果您的网站是针对一般公众,那么使用谷歌的 CDN 将是一个不错的选择。

如果您的网站也是针对中国,那么使用微软的 CDN 将是一个更好的选择。 根据我的经验,谷歌的服务器不断被中国政府屏蔽,使用它们的网站无法下载。

* 注意,你可以创建特定地区的网站,比如 cn.mysite.com,专门为中国服务,但是如果你资源和时间不足,这是值得考虑的。

这里是微软 CDN 的完整列表。 Http://www.asp.net/ajaxlibrary/cdn.ashx

它们后来被重命名为 Ajax.aspnetcdn.com,这减少了防火墙规则阻塞的可能性。