CDN、BCD 和 SVG:MDN 2018 年 4 月变更日志

编辑说明:变更日志 是“项目所有重大更改的日志或记录。[它] 通常包含有关更改的记录,例如错误修复、新功能等。” 发布变更日志是开源世界的一种传统,也是网络上的长期做法。我们认为,Hacks 的读者以及使用和贡献 MDN Web 文档 的人士会对了解 MDN 工程团队的工作以及他们在特定月份产生的影响感兴趣。我们还将介绍代码贡献机会、有趣的项目以及参与的新方式。

4 月完成

以下是 4 月对支持 MDN Web 文档代码、数据和工具 所做的更改。

以下是 5 月的计划

将 MDN 迁移到 CDN,将页面加载时间缩短了 16%

4 月 17 日,我们将 developer.mozilla.org 切换到由 CloudFront(亚马逊的内容交付网络 (CDN))提供服务。CDN 具有多种优势,MDN 的访问者现在正在体验到这些优势。

Response time drops from 2.7 to 1.2 seconds over the day

MDN 切换到 CDN 后,Pingdom 测量了响应时间的改善

CDN 在全球范围内拥有服务器网络,访问者会连接到最近的 CDN 服务器。我们的服务器连接时间占页面加载时间的 10%,在全球范围内改善了 57%,在欧洲范围内改善了 72%。

CDN 可以从我们的 Web 服务器请求页面一次,保存副本,然后在新的访问者请求时提供该副本。我们从简短、保守的缓存时间开始,但我们已经注意到热门页面(包括用于 Firefox 构建过程的 页面)的加载速度更快,因为它们通常直接从 CDN 提供服务。例如,我们测量了印度地区 JavaScript 基础知识 页面页面加载时间的 50% 改善。

我们之前已在使用 CDN 为我们的静态资产(如 JavaScript、CSS 和 JS)提供服务。将主站点迁移到 CDN 意味着我们可以从 developer.mozilla.org 提供静态资产,而不是从资产域提供。这会以两种方式影响网站速度。首先,浏览器会跳过对资产域的第二次 DNS 查找,每次查看都会节省大约 5%。其次,现代浏览器可以通过相同的 HTTP/2 连接请求后续资产。Stephanie Hobson 在 2017 年将 HTTP/2 添加到资产域时研究了 HTTP/2 对 MDN 的影响,我们本月实施了后续工作。

所有这些都累积起来,显著改善了页面加载时间。我们使用 WebPageTest 测量了页面加载时间,该测试为 主页 提供可靠的最佳情况指标。

位置 CDN 之前 使用 CDN 改进
弗吉尼亚州杜勒斯 1.93 秒 1.42 秒 0.51 秒
中国香港 2.68 秒 1.79 秒 0.89 秒
英国伦敦 2.40 秒 1.49 秒 0.91 秒
澳大利亚悉尼 2.68 秒 1.63 秒 1.05 秒

我们还使用 Google Analytics,它会测量整个网站的实际访问者的平均页面加载时间。

位置 CDN 之前 使用 CDN 改进
所有 MDN 访问者 3.91 秒 3.28 秒 0.63 秒
美国 2.44 秒 2.11 秒 0.33 秒
法国 3.03 秒 2.29 秒 0.74 秒
印度 6.05 秒 4.45 秒 1.60 秒
中国 7.87 秒 5.60 秒 2.27 秒

过去几个月的准备工作主要是编写我们的 CDN 缓存规则,以确保首次访问者很可能从 CDN 获得缓存副本,但登录用户、页面编辑者和翻译者会继续直接与我们的 Web 服务器进行通信。一个严重的错误在我们的初始测试中通过,导致用户在多个浏览器选项卡中编辑 MDN 时出现问题。我们修复了这个错误 (PR 4757),现在编辑已恢复正常,并且网站仍然比以往任何时候都快。

迁移了更多兼容性数据,目前已完成 72%

社区继续将兼容性数据从 MDN 迁移到 browser-compat-data 存储库。在合并了创纪录的 329 个拉取请求后,数据现在已迁移了 72%,而 4 月初为 63%。感谢 Florian ScholzMark BoasDaniel BeckExE Boss 和许多其他人迁移数据和审查 PR。

我们了解到三个使用此数据的项目。 polyfill-checker 会验证正在运行的代码是否使用 polyfill 而不是内置功能,以确保代码在较旧的浏览器中运行相同。 eslint-plugin-bultin-compat 使用 ESLint 的静态分析执行类似的工作。 MDN 浏览器兼容性数据浏览器 是一个用于浏览数据的 Rails 应用程序,它包括功能搜索以及浏览器支持的摘要图表。

Pie charts show the proportion of features supported in Chrome, Firefox, and Opera. The majority of features are supported, but support is unknown for about 15%.

MDN 浏览器兼容性数据浏览器图表

Mark Dittmer 继续在 mdn-confluence 工具 上进行工作。此工具从 Web API Confluence 生成潜在的兼容性数据更新,该工具通过直接测试浏览器收集 JavaScript API 的可用性。mdn-confluence 工具已集成到 BCD 开发环境中。数据迁移完成后,我们的重点将转移到更正和更新数据,类似这样的工具将成为该流程的一部分。

将基于字体的图标替换为内联 SVG

MDN 一直使用 Font Awesome 提供高质量的图标。基于字体的图标的一项功能是对 Internet Explorer 7 的强大支持,在 2014 年我们上次更新图标系统时,Internet Explorer 7 仍然是一个优先事项。我们一直在更新支持的浏览器列表,并且在 4 月,Schalk Neethling 开始将基于字体的图标切换为内联 SVG 图标。

这两种方法都会生成在高 DPI 显示器上看起来很好的清晰图标。图标字体需要一个网络请求来下载字体文件,无论是标准版本(包括我们不使用的许多图标)还是最小化版本(我们维护并自己提供服务)。使用内联 SVG,浏览器会通过初始 HTML 请求获取图标数据,并且不会获取页面上未使用任何其他图标。内联 SVG 也更适合我们的模板系统,使开发人员更清楚地了解正在使用的图像。

这项工作将在 5 月继续进行,因为我们将在使用 SVG 图标时改进 可访问性 和本地化。我们还将删除支持基于字体的图标的代码,从而简化 CSS 和 JavaScript。

发布了调整和修复

4 月合并了 510 个 PR

其中 140 个来自首次贡献者

其他重要的 PR

计划在 5 月

发布 HTML 交互式示例

MDN 员工和志愿者正在编写 HTML 交互式示例,例如 一个 <datalist> 的演示。这将添加到 JavaScript 和 CSS 示例中,并将完成交互式示例项目的第一个阶段。有一个 错误 阻止了 HTML 示例的发布,该错误将在 5 月得到修复,然后这些新示例可以发布到 MDN。

如果您想帮助编写 HTML 示例,请参见 Discourse 上的 求助信息

部署 Django 1.11

Django 1.11 的工作在 4 月继续进行,但 CDN 比预期花费了更多精力。我们将继续进行 Django 升级工作,并计划在 5 月部署它。

关于 John Whitlock

John 是一位网页开发者,负责 MDN Web Docs 的引擎

更多 John Whitlock 的文章...