您使用哪个 CDN 链接到您的 jquery 文件或任何 javascript 文件实际上是否重要。一个可能比另一个更快吗?还有哪些其他因素会影响您决定使用 CDN?我知道微软、雅虎和谷歌现在都有 CDN。
用于 jQuery 或 Google CDN 的 Microsoft CDN?
根据评论更新:
简短版本:这无关紧要,但可能取决于他们托管的内容。它们都托管不同的东西: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:
- 微软Ajax.js
- MicrosoftAjaxWebForms.js(直到 4.0 我们不会完全删除所有 UpdatePanels)
- jQuery.Validate.min.js
我们的服务器:
- 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 Speed和YSlow。如果您使用 CDN,但您的页面由于没有缓存头而每次都请求图像,那么您就错过了唾手可得的果实。Firebug 的 Net 面板可以快速为您提供页面加载时间的快速细分,Page Speed/YSlow 可以提供一些很好的建议来提供帮助。
您绝对应该为 jQuery 使用 Google CDN(这来自以 Microsoft 为中心的开发人员)。
这是简单的统计。那些考虑将 MS CDN 用于 jQuery 的人永远是少数。有太多使用 jQuery 的非 MS 开发人员会使用 Google 的,而不会考虑使用 Microsoft 的。由于公共 CDN 的一大优势是改进了缓存,因此在多个 CDN 之间拆分使用会降低该优势的潜力。
Google 会向您发送使用他们自己的软件缩小的 jQuery 版本,该版本比 MS 提供的标准缩小版本轻 6kb。去谷歌。
需要考虑的一件小事是,两家公司都提供略有不同的“额外”库:
- 微软在他们的 CDN 上提供了JQuery 验证库,而谷歌没有(http://www.asp.net/ajaxlibrary/cdn.ashx)
- 谷歌在他们的 CDN 上提供了JQuery UI 库,而微软没有(http://code.google.com/apis/ajaxlibs/documentation/)
根据您的需要,这可能是相关的。
还应该注意的是,由于 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 更受欢迎,这大大增加了文件被缓存的机会。
所以我强烈推荐使用谷歌。