小编典典

用于jQuery或Google CDN的Microsoft CDN?[关闭]

javascript

您实际上使用哪个CDN链接到您的jquery文件或任何javascript文件是否重要?一个可能比另一个更快吗?您决定在哪个CDN中使用哪些其他因素?我知道Microsoft,Yahoo和Google现在都具有CDN。


阅读 263

收藏
2020-05-01

共1个答案

小编典典

根据评论更新:

简短版:没什么关系,但可能取决于他们托管的内容。他们都拥有不同的东西:谷歌没有托管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:

  • jquery.min.js
  • jquery-ui.min.js。
    我们用于以下方面的Microsoft CDN:

  • MicrosoftAjax.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比DNS早返回DNS ajax.microsoft.com,仅是因为本地DNS服务器更有可能收到请求(这是该区域中的第一个用户) 。这是非常小的事情,只有在性能极其重要(低至毫秒)时才应考虑。
(是的:我意识到这一点与我同时使用两个CDN是相反的,但是在我们的案例中,DNS时间远远超过了发生的javascript /阻止的等待时间)

最后,如果您没有看过它,那么Firebug是其中最好的工具,还有一些它的插件:Page Speed和YSlow。如果您使用CDN,但由于没有缓存头,则页面每次都在请求图像,那么您将错过低挂的果实。Firebug的“网络”面板可以快速为您提供页面加载时间的快速细分,而页面速度/ YSlow可以提供一些很好的建议来帮助您。

2020-05-01