jQuery 的内容交付网络:您已获得服务!

发布日期 作者

MaxCDN在 2013 年,MaxCDN 加入 jQuery 基金会,并开始为 jQuery CDN(位于 code.jquery.com)提供内容交付网络 (CDN) 服务。现在可以通过 HTTP 和 HTTPS(SSL)协议请求文件,无论是下载到您自己的服务器上还是直接在生产网站上使用。MaxCDN 的基础设施可以通过遍布全球的高速服务器网络可靠地交付 jQuery 文件,从而最大程度地减少往返时间。

为什么 CDN 对开发人员很有用

显而易见的好处是,MaxCDN 网络比普通服务器快得多,并且在地理上分布,因此往返时间保持较低。但是,还有一个微妙的好处。许多网站只是从同一个域中提供所有内容(HTML、CSS、脚本、图像和其他资源)。这会导致浏览器和服务器的瓶颈。从多个域下载内容(称为 域分片)可以提高性能。请记住,就像任何好东西一样,过度使用是一个 坏主意。一些研究表明,只有两个域可能是最佳选择。使用 WebPageTest 等工具测试您的网站,以获得最佳结果。

为什么 CDN 对 jQuery 项目很有用

jQuery 项目会提供大量的字节,尤其是在项目发布新版本的日子里。当开发人员争先恐后地下载最新版本时,我们需要能够处理负载。GitHub 在支持我们的开发周期和工作项目文件方面做得很好,但它并非设计用于提供数十亿个生产文件的副本。谷歌和微软也提供 CDN,但是从项目发布到文件出现在这些 CDN 上可能需要几天时间。第三方 CDN 也有一些关于哪些文件可以放在 CDN 上的规则,例如,它们不会发布预发布版本。jQuery CDN 使我们能够完全控制时间和内容。

提供数十亿个文件,万亿个字节

我们认为我们提供很多文件,但是 MaxCDN 的一些统计数据确实说明了这一点。在 2013 年的最后五个月里,CDN 提供了超过 820 亿个文件,超过了 3.6 PB。我们发送的字节数足以完全填满 3,269 个 1 TB 的磁盘驱动器!CDN 上的平均日数据量约为 20 TB。

以下是从 CDN 请求的十个最受欢迎的文件

# 文件名 命中次数
(十亿)
大小
(太字节)
1 jquery-latest.js 6.36 404.65
2 jquery-1.9.1.min.js 5.93 193.96
3 jquery-1.7.2.min.js 4.95 154.50
4 jquery-latest.min.js 4.45 116.08
5 /ui/1.10.3/jquery-ui.js 4.18 484.58
6 jquery-1.9.1.js 2.45 178.54
7 jquery-1.10.1.min.js 2.27 71.62
8 jquery-1.7.1.min.js 2.26 78.05
9 jquery-1.4.2.min.js 2.07 39.80
10 /ui/1.10.3/themes/smoothness/jquery-ui.css 1.55 9.83

这里有一些令人鼓舞的迹象。一些最受欢迎的文件是压缩文件,对于生产网站来说应该如此。同样令人鼓舞的是,jQuery Core 的最新版本 (1.9.1 和 1.10.1) 位列榜首。这意味着很多 jQuery 开发人员一直在跟上我们添加的功能和错误修复。

最常请求的文件是 jquery-latest.js,它会在 jQuery Core 团队发布新版本时自动更新。开发人员永远不要在生产网站上使用 jquery-latest.js 或 jquery-latest.min.js,它主要用于测试。类似地,位置 5 的完整 jQuery UI 构建是最新版本,但是对于只需要几个 jQuery UI 小部件的生产网站来说,该文件可能并不合适。可以在 下载构建器页面 上构建一个包含所需小部件的压缩副本。

依靠 CDN

感谢 MaxCDN 的贡献,jQuery 基金会拥有一个内容交付网络,该网络为我们所有项目文件提供可靠的高速访问。 code.jquery.com 上的文件是所有 jQuery 项目发布的官方存储库。您可以下载文件以供本地使用,也可以直接从您的网页引用我们的域,以利用 CDN 和域分片。

jQuery 的内容交付网络:您已获得服务!” 上的 18 个想法

  1. 这些数字太疯狂了!人们是否没有使用缓存?

    我发现 jQuery CDN 相对来说不太为人所知,大多数人仍然使用 Google 和 MSFT CDN 终结点。考虑到这一点,很难相信 jQuery CDN 的数字如此之高。

  2. Justin Dorfman 说:

    @Roger 我可以确认这些数字确实是真的。这让我想知道谷歌和微软处理了多少请求。我真的很希望他们能更透明地公布这些数据。

  3. 使用 code.jquery.com CDN 与 Google CDN 相比有什么优势?一个明显的缺点是 code.jquery.com 的 SSL 配置目前不安全。根据 https://www.ssllabs.com/ssltest/analyze.html?d=code.jquery.com,它支持匿名(不安全)密码套件,导致评级为 F。另一方面,Google 的 CDN 域获得了 A 评级:https://www.ssllabs.com/ssltest/analyze.html?d=ajax.googleapis.com

    EFF 已经详细介绍了(实际上是安全的)https 连接的重要性,并且公开跟踪进度(例如,请参阅 https://www.eff.org/deeplinks/2013/11/encrypt-web-report-whos-doing-what)。

  4. Justin Dorfman 说:

    @John 感谢您提请我们注意这一点。我今天会和我们的工程师谈谈,看看我们如何解决这个问题。

  5. 我在 gtmetrix.com 上进行了一些性能测试
    它对使用 code.jquery.com 托管资源有一些建议

    它要求
    指定一个 Vary: Accept-Encoding 标头
    以下可公开缓存、可压缩的资源应该具有“Vary: Accept-Encoding”标头;

    这是否可以通过我的 htaccess 配置?您需要进行更改吗?
    我检查了 asp.net 托管版本,它在 gtmetrix 上没有提供 vary accept 建议

    以及压缩 JavaScript
    压缩以下 JavaScript 资源可以将它们的大小减少 87B(减少 1%)

    我知道这只有几字节,但每字节都很重要,尤其是在从各种来源提供大量数据时

    谢谢

  6. 嗨,
    为什么不是通过网页浏览器本身提供服务器 404.65 TB 的 jQuery 数据?
    为什么我们不将所有流行的 js 框架捆绑到 bowser 内部,并将 html 文件本地引用它?

    这不可能吗?浪费 404.65 TB 的带宽是不必要的!!

  7. Justin Dorfman 说:

    @Matt 我会和 jQuery 基础设施团队讨论 Accept-Encoding 头部。 这是一个非常简单的修复,我在去年写过一篇关于它的文章 (http://j.mp/1fRJMDJ)。

    @John 是的,我们将在本线程以及我们的博客上更新信息。 我们本周正在测试新的密码,以确保性能不会受到任何影响。

  8. Justin Dorfman 说:

    @Matt 与基础设施团队合作,“Vary: Accept-Encoding” 头部现在已在所有资源上可用。

    curl -I code.jquery.com/jquery-1.10.2.min.js
    HTTP/1.1 200 OK
    Date: Mon, 20 Jan 2014 18:47:22 GMT
    [已剪切]
    Vary: Accept-Encoding

  9. @justin

    感谢您和基础设施团队的更新。 它运行完美。

    有考虑过额外的压缩吗?
    我认为这与第 1 行和第 2 行的注释标签有关。

  10. Justin Dorfman 说:

    @Matt 我们只是托管提供给我们的文件。 我想您指的是这一行

    `/*! jQuery v2.1.0 | (c) 2005, 2014 jQuery Foundation, Inc. | jquery.org/license */`

    IMO 应该保留它,以给作者的贡献者以信用,并说明许可协议。

  11. 数据似乎表明缓存不足。 实际上,它们太大,不可能是真的,这里肯定出了一些问题。