没投过票?千万别说你来过 OSC
https://www.oschina.net/project/top_cn_2020
Mozilla 宣布对 MDN Web Docs 服务的底层平台 Kuma 进行重大改进,并分享了与之相关的详细信息。
简单来说,此次改进会将 MDN Web Docs 的内容从 MySQL 数据库迁移托管到 GitHub 仓库。Mozilla 解释了这样做的好处:
- 减轻开发者的维护负担:现有平台(Kuma)很复杂,并且难以维护,所以开发者添加新功能非常困难。此次改进将极大地简化平台代码,官方估计可以删除现有代码库中的很大一部分,这意味着更容易维护和贡献。
- 优化贡献者的工作流:新平台将使用 GitHub 的贡献 工具 和功能,本质是将现有的 Wiki 模式转换为 PR 模式。贡献者可以更好地进行智能检查、大规模编辑,以及将 MDN 文档包含在要添加到的任何工作流中。
- 加强社区互动:目前的模式是,MDN 内容被编辑后会立即发布,如果不合适就会被还原。很显然,这种模式对贡献者并不友好。如果采用 PR 模式,贡献者提交的编辑内容会被审核并收到反馈,实际上这是与贡献者进行对话,和他们建立关系并帮助他们学习。
- 改进前端架构:现有的 MDN 平台存在部分前端不一致和无障碍方面的问题,新的平台将会对此进行解决。
下面简单介绍 Mozilla 如何改进 MDN Web Docs 服务的底层平台 Kuma。
简化后端平台
Mozilla 正在用 JAMStack 架构取代目前的 MDN Wiki 平台,将内容发布在 GitHub repo 中管理。他们认为与现有的 Wiki 平台相比,此方案具有许多优点,也是多年来一直在考虑的事情。
当前的 MDN Wiki 平台
从上图可以看到,内容贡献者(作者)和内容浏览者(读者)使用服务时都是通过同一架构进行获取。尽管 MDN Web Docs 服务 99% 以上的流量由读者的文档页面请求组成,但该架构必须同时满足两种用例。目前的方案是,当用户请求文档页面时,先从 MySQL 数据库读取文档的最新版本,然后将其渲染成最终的 HTML 格式,并通过 CDN 返回给用户。
该文档页面会在接下来的 5 分钟内从 CDN 的缓存中存储并提供服务,所以后续的请求——只要是在这 5 分钟的窗口内,就会由 CDN 直接提供服务。缓存时间如此短的原因主要是需要满足作者的需求。如果只需要满足读者的需求,就可以大大增加缓存时间,更快速地提供文档页面,同时减少后端服务器的工作量。
此外,由于 MDN 是 Wiki 平台,因此 Mozilla 负责管理所有内容,以及诸如存储文档修订、显示文档修订历史和显示修订版之间的差异等任务。目前 MDN 开发团队维护着专门用于这类任务的大量代码。
新的 MDN 平台
新的 MDN 平台使用了 JAMStack 架构,作者和读者使用的服务被分开提供。作者通过 GitHub repo 和 PR 模式管理文档内容,读者则通过 CDN(具有更长的缓存时间)从 S3 提供的预渲染文档页面更快、更有效地获取文档。GitHub repo 中的文档内容将会每天被渲染并部署到 S3。
这种分离服务的方式有不少好处:
- 用最简单、最快和最有效的方式将文档页面提供给读者。这一点非常重要,因为 MDN 99% 的流量来自于读者,而全球范围的性能对于用户体验至关重要。
- 因为使用了 GitHub 来管理文档内容,所以可以利用 GitHub 作为内容管理系统所提供的世界级功能,Mozilla 也因此不再需要支持当前 Wiki 平台的大量相关代码。
- 对每项内容的 PR 进行自动检查和测试,以更好地控制质量和安全性。
由于 MDN 内容将会存储在 GitHub repo,因此贡献者编辑或者添加内容等工作流也会发生重大变化,以前直接在页面进行编辑的方式将不可行,贡献者需要使用 git CLI 或 GitHub Desktop 之类的 GUI 工具对文档内容进行修改,然后提交 PR,等待被合并。
查看原文了解更多改进 MDN Web Docs 服务的具体内容。
猜你喜欢: