【问题标题】:Lightweight JS Library vs Google-hosted CDN轻量级 JS 库与 Google 托管的 CDN
【发布时间】:2012-02-27 10:52:50
【问题描述】:

当页面加载速度是首要任务时,是使用最小、轻量级的 JavaScript 库(托管在 CDN 上)更好,还是使用 jQuery 之类的东西更好,托管在 Google 的 CDN 上,浏览器更有可能已经加载了吗?

编辑:我的问题真正归结为使用托管在 Google 的 CDN 上的 jQuery 的跨站点缓存效果是否超过了使用超轻量库(也在 CDN 上)的好处。

【问题讨论】:

  • 无论哪种方式,最多只能加载一次。
  • 我总是觉得加载 95 KB 的 jQuery 的问题很奇怪,因为其中许多网站已经包含数百 KB 的未优化图形并且大多数用户都在高速连接上。与初始页面加载相比,大量的同时 jQuery 动画对用户体验的损害要大得多。

标签: javascript jquery cdn google-cdn


【解决方案1】:

与目前其他任何 javascript 库相比,jQuery 并不繁重,因为它支持的功能和浏览器的数量。

您可以在选择要在页面上使用的插件时考虑这个因素,因为它们是由不同的用户编写的,有些人可能会明智地考虑到这个因素,或者有些人可能只是为了方便而正确。

是的,如果您为 jQuery 使用 Google 之类的 CDN,则很可能该库必须由浏览器缓存,而且 Google 具有基于位置的服务器数量,因此您不必担心。

【讨论】:

【解决方案2】:

延迟降低

CDN 将您的静态内容分发到位于不同物理位置的服务器上。当用户的浏览器解析这些文件的 URL 时,他们的下载将自动定位到网络中最近的可用服务器。

在 Google 的 AJAX 库 CDN 的情况下,这意味着任何不在您服务器附近的用户将能够比您强制他们从任意位置的服务器下载 jQuery 更快。 与 Google 相媲美的 CDN 服务屈指可数,但免费的价格难以超越!仅此一项好处就可以决定问题,但还有更多。

提高并行度

为避免不必要的服务器超载,浏览器会限制可同时建立的连接数。根据哪个浏览器,此限制可能低至每个主机名两个连接。 使用 Google AJAX 库 CDN 消除了对您网站的一个请求,允许并行下载更多本地内容。对于拥有六个并发连接浏览器的用户来说,这并没有太大的区别,但对于那些仍在运行只允许两个并发连接的浏览器的用户来说,差异是显而易见的。

更好的缓存

使用 Google AJAX 库 CDN 的最大好处可能是您的用户可能根本不需要下载 jQuery。 无论您的网站优化得多么好,如果您在本地托管 jQuery,那么您的用户必须至少下载一次。您的每个用户可能已经在他们的浏览器缓存中拥有数十个相同的 jQuery 副本,但是当他们访问您的网站时,这些 jQuery 副本会被忽略。

但是,当浏览器看到对 CDN 托管的 jQuery 副本的引用时,它会理解所有这些引用确实引用了完全相同的文件。由于所有这些 CDN 引用都指向完全相同的 URL,浏览器可以相信这些文件确实是相同的,并且不会浪费时间重新请求已缓存的文件。因此,无论 CDN 引用出现在哪个站点,浏览器都可以使用缓存在磁盘上的单个副本。

这会产生强大的“跨站点缓存”效果,所有使用 CDN 的站点都可以从中受益。由于 Google 的 CDN 为文件提供标题,试图将文件缓存长达一年,因此这种效果确实具有惊人的潜力。由于 Internet 上数以千计的流量最大的站点已经使用 Google CDN 来提供 jQuery,因此您的许多用户很可能在访问使用 CDN 的站点时永远不会对 jQuery 发出单个 HTTP 请求。 即使有人使用同一个 Google 托管版本的 jQuery 访问数百个网站,他们也只需要下载一次!

【讨论】:

  • 问题不在于 CDN 是什么,或者有什么好处。
  • @kennis:再读一遍,可能不会。正是问题的标题让我提交了这个。 “轻量级 JS 库 vs Google 托管的 CDN”,我假设轻量级 JS 库托管在本地,他想知道本地和 CDN 的好处。如果他选择 CDN 托管库,这可能会对他有所帮助
  • 谢谢,这绝对有用。不过,我真正想知道的是,在 Google 的 CDN 上使用 jQuery 的跨站点缓存效果是否超过了在 CDN 上使用超轻量库的好处。
  • 有趣的问题。我相信超轻量级的 CDN 托管库的加载速度会比 jQuery 库快,但加载量不会很大。就个人而言,我会选择一个缩小的 jQuery CDN,因为它越来越受欢迎。您的访问者在某个时候已经下载它的机会非常高。
【解决方案3】:

最好使用最适合您的应用程序和开发团队需求的库。一个超轻量级的库可能会为您节省几百毫秒的加载时间,但如果您的团队在 jQuery/MooTools/Dojo 等方面拥有更多经验,最终可能会花费您的开发时间。

如果仅仅使用二流工具来缩短加载时间而阻碍了新功能的实施和错误修复,那么您的用户最终会受到影响。

【讨论】:

    猜你喜欢
    • 2012-04-06
    • 2013-04-26
    • 2015-02-25
    • 1970-01-01
    • 2014-11-29
    • 1970-01-01
    • 2012-02-25
    • 2011-01-14
    • 1970-01-01
    相关资源
    最近更新 更多