用于 jQuery 或 Google CDN 的 Microsoft CDN?

IT技术 javascript jquery performance httprequest cdn
2021-01-30 11:17:50

您使用哪个 CDN 链接到您的 jquery 文件或任何 javascript 文件实际上是否重要。一个可能比另一个更快吗?还有哪些其他因素会影响您决定使用 CDN?我知道微软、雅虎和谷歌现在都有 CDN。

6个回答

根据评论更新:

简短版本:这无关紧要,但可能取决于他们托管的内容。它们都托管不同的东西:Google 不托管 jQuery.Validate,Microsoft 不托管 jQuery-UI,自 2016 年以来他们托管了!!,Microsoft 提供了他们的脚本,否则这些脚本将通过ScriptResource.axd更简单的集成提供服务(例如ScriptManager 与 ASP。净 4.0)。

重要说明: 如果您正在构建 Intranet 应用程序,请远离 CDN 方法。不要紧,谁的收留了它,除非你是在非常重载的服务器内,没有CDN会给你更多的性能比本地100MB / 1GB以太网会。如果您将 CDN 用于严格的内部应用程序,则会损害性能正确设置缓存过期标头并忽略仅内联网场景中存在的 CDN。

任何一个被阻止的机会似乎都差不多,几乎为零。我曾处理过不正确的合同,但这似乎是一个例外。此外,自从这个答案最初发布以来,围绕它的上下文已经发生了很大变化,Microsoft CDN 取得了很大进展。

我目前参与的项目使用了两种 CDN,这两种 CDN 最适合我们的解决方案。有几个因素在起作用。使用旧浏览器的用户仍然可能按照 HTTP 规范的建议为每个域同时发出 2 个请求对于任何运行任何支持流水线的新东西(每个当前浏览器)的人来说,这都不是问题,但基于另一个因素,我们也正在消除此限制,至少就 javascript 而言。

我们使用的 Google CDN:

我们使用的微软 CDN:

我们的服务器:

  • Combined.js?v=2.2.0.6190 (Major.Minor.Iteration.Changeset)

由于我们构建过程的一部分是组合和缩小所有自定义 javascript,因此我们通过自定义脚本管理器执行此操作,该管理器包括这些脚本的发布或调试(非缩小)版本,具体取决于构建。由于 Google 不托管 jQuery 验证包,因此这可能是一个缺点。MVC 在其 2.0 版本中包含/使用它,因此您可以完全依赖 Microsoft 的 CDN 来满足您的所有需求,并且所有这些都可以通过 ScriptManager 自动完成

唯一要提出的另一个论点是 DNS 时间,这在页面加载速度方面是有代价的。 平均而言:仅仅因为它被使用得更多(它存在的时间更长)ajax.googleapis.com很可能比 更早ajax.microsoft.com被 DNS 返回,仅仅因为本地 DNS 服务器更有可能获得它的请求(这是该地区的第一个用户惩罚) . 这是一件非常小的事情,只有在性能非常重要时才应该考虑,精确到毫秒。
(是的:我意识到这一点与我同时使用两个 CDN 背道而驰,但在我们的例子中,DNS 时间远远被 javascript/阻塞发生的等待时间所掩盖)

最后,如果您还没有看过它,那么最好的工具之一是Firebug和它的一些插件:Page SpeedYSlow如果您使用 CDN,但您的页面由于没有缓存头而每次都请求图像,那么您就错过了唾手可得的果实。Firebug 的 Net 面板可以快速为您提供页面加载时间的快速细分,Page Speed/YSlow 可以提供一些很好的建议来提供帮助。

我已经看到谷歌被阻止在政府网站上停止 gmail。但由于它是如此罕见,在这种情况下,我几乎不会尝试将其用作理由。
2021-03-14 11:17:50
自从编写此文后,MS 已将 jQuery-UI 添加到他们的 CDN:asp.net/ajaxlibrary/cdn.ashx#Using_jQuery_UI_from_the_CDN_10
2021-03-14 11:17:50
不太可能被屏蔽?我很想知道你是怎么想出这个主意的。MS 网络无论如何都不是 MS 的,它是 akamai 的,他们做负载平衡服务器的时间比谷歌的时间长得多,这也是“更好的失败系统”的无稽之谈。真的,如果你要做出这样的声明,一些证据会很好。
2021-03-22 11:17:50
一些公司(我曾为一些公司工作过)完全阻止 *.microsoft.com 作为他们阻止 Windows 更新的一部分。这个对吗?不,会发生吗?是的。示例:ajax.microsoft.com/...它属于 *.microsoft.com 块,而不属于 www 例外,当公司选择阻止除 www.microsoft.com 之外的任何内容时,它会被阻止。我没有说它很有可能,我说它更有可能,因为我从未见过谷歌被屏蔽,但看到了相反的情况。
2021-04-08 11:17:50
@Nick Microsoft 已将其 CDN 从 ajax.microsoft.com 移至 ajax.aspnetcdn.com。因此,作为阻止 Windows 更新的一部分,不可能阻止 Microsoft 的 CDN。
2021-04-10 11:17:50

您绝对应该为 jQuery 使用 Google CDN(这来自以 Microsoft 为中心的开发人员)。

这是简单的统计。那些考虑将 MS CDN 用于 jQuery 的人永远是少数。有太多使用 jQuery 的非 MS 开发人员会使用 Google 的,而不会考虑使用 Microsoft 的。由于公共 CDN 的一大优势是改进了缓存,因此在多个 CDN 之间拆分使用会降低该优势的潜力。

@snumpy:与我所看到的相比,Google CDN 的领先优势已经扩大了很多。Microsoft CDN没有任何问题它很快,并且有一些 Google 没有的文件。不过,跨站点缓存的好处取决于网络范围的覆盖范围,而在这方面 Google 的优势在所有其他方面都占主导地位。
2021-03-24 11:17:50
因为我已经从 jQuery CDN 切换到 Microeoft 来托管 jQuery Mobile,所以我将我的其他 jQuery 下载从 Google 转移到它以减少 DNS 往返次数。只是另一个因素:)
2021-03-24 11:17:50
@DaveWard,您能否确认情况仍然如此,或者过去几年的情况是否有所转变?
2021-03-29 11:17:50
这不是假设。使用 Google CDN 的 Alexa 排名前 200,000 的站点数量超过了 Microsoft 的超过 100:1。就缓存的流行程度而言,唯一支持 MS jQuery CDN 的一点是 Microsoft.com 使用了它,这使得它仅从一个参考中就获得了很多曝光(但不如成千上万个引用 Google )。
2021-03-31 11:17:50
如果我们一直这样想,那么只有更大的才能呼吸。不要仅仅使用谷歌,因为它是谷歌并假设每个人都和他们在一起(毫无疑问,大多数人都和他们在一起)。但让最好的胜利,比较结果并与他们一起去。
2021-04-03 11:17:50

Google 会向您发送使用他们自己的软件缩小的 jQuery 版本,该版本比 MS 提供的标准缩小版本轻 6kb。去谷歌。

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

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

自从编写此文后,MS 已将 jQuery-UI 添加到他们的 CDN:asp.net/ajaxlibrary/cdn.ashx#Using_jQuery_UI_from_the_CDN_10
2021-03-24 11:17:50

还应该注意的是,由于 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.4K

http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js - 26.5K

此外,正如其他人所说,谷歌 CDN 更受欢迎,这大大增加了文件被缓存的机会。

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

这在当时是一个很好的反对意见,但不再适用,因为推荐的 CDN 域名现在是 ajax.aspnetcdn.com。对 *.microsoft.com 异议的阻止也不再适用。
2021-04-02 11:17:50
这是真实的。很高兴他们终于修复了这部分。现在,我对从 ms cdn 中包含 jquery 验证/循环插件并不感到难过。
2021-04-05 11:17:50
由于切换到 aspnetcdn,cookies 的事情也不再适用。
2021-04-05 11:17:50