用于jQuery或Google CDN的Microsoft CDN?

Xai*_*oft 186 javascript performance jquery cdn httprequest

实际上,您使用哪个CDN链接到您的jquery文件或任何javascript文件.一个人可能比另一个人更快吗?还有哪些其他因素可以起到决定使用哪种cdn的作用?我知道微软,雅虎和谷歌现在都有CDN.

Nic*_*ver 151

根据评论更新:

简短版:它并不重要,但可能取决于它们的主机.他们都拥有不同的东西:谷歌没有托管jQuery.Validate,微软没有托管jQuery-UI,自2016年以来他们做了!!,微软提供了他们的脚本,否则将通过ScriptResource.axd和更容易的集成(例如ScriptManager与ASP).净4.0).

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

被阻挡的可能性似乎大致相等,几乎为零.我曾经合作过这种情况并非如此,但这似乎是一个例外.此外,自从这个答案的原始发布,围绕它的上下文发生了很大变化,Microsoft 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很可能是由DNS不是越早回来ajax.microsoft.com,仅仅是因为本地DNS服务器更容易得到它的要求(这是该地区点球的第一用户) .这是一个非常小的事情,只有在性能非常重要时才应考虑,直到毫秒.
(是的:我意识到这一点与我使用两个CDN相反,但在我们的例子中,DNS时间远远超过了发生javascript /阻塞的等待时间)

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

  • 不太可能被阻止?我很想知道你是怎么想出这个主意的.无论如何,MS网络都不是MS,它是那些比谷歌更长时间使用负载平衡服务器的厂商,这也是"更好的覆盖系统"的无意义.真的,如果你要提出这样的声明,一些证据会很好. (26认同)
  • 由于这是写的,MS已经将jQuery-UI添加到他们的CDN:http://www.asp.net/ajaxlibrary/cdn.ashx#Using_jQuery_UI_from_the_CDN_10 (19认同)
  • 一些公司,我已经为一些公司工作,直接阻止*.microsoft.com作为阻止Windows更新的一部分.它是否正确?不,它会发生吗?是.示例:http://ajax.microsoft.com/...it属于*.microsoft.com块,而不属于www例外,当公司选择阻止除www.microsoft.com以外的任何内容时,它被阻止.我没有说这很可能,我说它更有可能,因为我从来没有见过谷歌被阻止但是已经看到相反的情况. (16认同)
  • 而且我看到谷歌被阻止在政府网站停止gmail.但由于这种情况非常罕见,在这种情况下我几乎不会尝试将其作为理由. (5认同)
  • @Nick Microsoft已将其CDN从ajax.microsoft.com移至ajax.aspnetcdn.com.因此,作为阻止Windows更新的一部分,没有机会阻止微软的CDN. (3认同)
  • @Nick:这可能是你的经验,我已经现在写了11年的企业Web应用程序和他们通常来自服务器的公司中运行,他们只与发端服务器进行通信.我的意见是为了警告开发人员不要向尚未依赖互联网连接的应用程序添加依赖项 (2认同)

Dav*_*ard 88

你应该绝对使用谷歌CDN的jQuery(这来自一个以微软为中心的开发人员).

这是简单的统计数据.那些考虑将MS CDN用于jQuery的人将永远是少数.有太多的非MS开发人员使用jQuery,他们会使用谷歌,而不会考虑使用微软的.由于公共CDN的一大胜利是改进的缓存,因此在多个CDN之间分配使用会降低这种益处的可能性.

  • 这不是一个假设.使用谷歌CDN的Alexa排名前200,000的网站数量超过微软的100:1.就缓存的受欢迎程度而言,支持MS jQuery CDN的唯一一点就是Microsoft.com使用它,这使得它仅仅从那个引用中获得了大量曝光(但不如引用Google的数千个顶级网站那么多) ). (20认同)
  • 如果我们一直这么想,那么只有更大的才能呼吸.不要只是使用谷歌,因为它是谷歌并假设每个人都与他们(毫无疑问大多数与他们).但是,让最好的胜利,比较结果,并与他们一起去. (7认同)
  • @snumpy:谷歌CDN已经从我看到的方面略微扩大了领先优势.Microsoft CDN没有*错误*.它速度很快,并且有一些谷歌没有的文件.跨站点缓存的好处取决于网络覆盖范围,而谷歌在这方面主导所有其他方面. (3认同)

Osc*_*hed 20

谷歌将向您发送使用自己的软件缩小的jQuery版本,此版本比MS提供的标准缩小版本轻6kb.去谷歌.


dp.*_*dp. 18

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

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

  • 由于这是写的,MS已经将jQuery-UI添加到他们的CDN:http://www.asp.net/ajaxlibrary/cdn.ashx#Using_jQuery_UI_from_the_CDN_10 (23认同)

Ali*_*air 15

还应该注意的是,由于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异议也不再适用. (3认同)

lod*_*d3n 11

它可能没关系,但您可以通过一些A/B测试来验证这一点.将一半流量发送到一个CDN,将一半流量发送到另一个CDN,并设置一些分析来测量响应.我认为,如果一个或另一个有一些严重的不可用问题,能够轻松切换更为重要.


Jer*_*ade 7

我知道我在这里迟到了,但这里是我在制作中使用的代码.我从来没有遇到过这个问题,但你的里程可能会有所不同.确保在自己的环境中进行测试.

<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> 
Run Code Online (Sandbox Code Playgroud)

  • 因此,您的IE6用户体验稍微慢一点.如果你问我,可以做出很好的权衡.即使在企业内部网中,IE6也在下降. (2认同)

ach*_*art 7

这是关于统计数据:jquery.com从谷歌加载jQuery.Twitter,Stackoverflow和许多其他人也是如此.因此,您的网站用户已经有很高的可能性已经缓存= 根本没有下载.

忘记验证器,带宽和速度,因为这是主要的好处.否则,任何其他CDN选项将基本上在同一级别执行.


Ant*_*los 5

一个可能比另一个更快吗?

我自己实际上对此很好奇,所以我使用以下每个设置了一个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次):

视频: http : //www.webpagetest.org/video/view.php?id=121019_16c5e25eff2937f63cc1714ed1eac814794e62b3

报告: http : //www.webpagetest.org/video/compare.php? tests= 121019_D2_KF0,121019_9Q_KF1,121019_WW_KF2,121019_9K_KF3

这是第二个测试(每个测试另外三个):

视频: http : //www.webpagetest.org/video/view.php?id=121019_a7b351f706cad2c25664fee7ef349371f17c4e74

报告: http : //www.webpagetest.org/video/compare.php? tests= 121019_MP_KJN, 121019_S6_KJP,121019_V9_KJQ, 121019_VY_KJR