跳至主要内容
Deno 2 终于来了 🎉️
了解更多
The Guardian chose Deno for its native TypeScript support, minimal dependency bloat, and simple robust APIs.

卫报如何使用 Deno 审核其 270 万篇文章的可访问性和性能

领先的独立出版机构卫报需要一个轻量级、低维护的解决方案来审核其文章的性能和可访问性。了解卫报如何在关键基础设施中使用 Deno 审核其 270 万篇文章的可访问性和性能。

挑战

卫报网站每月有超过 3.5 亿的独立访问页面。为了满足读者的期望,他们的网站不仅要优化性能,尽可能快地提供内容,还要支持各种 Web 可访问性要求。

作为一个大型媒体网站,每一毫秒都很重要。 据 BBC 称,页面加载速度每增加一秒,就会导致 10% 的用户离开。“我们需要一种方法来确保我们的资产在发布到我们的网站时得到优化,”网站高级软件工程师 Max Duval 说。

除了性能,工程师还认识到,他们的许多读者使用各种辅助技术来阅读他们网站上的内容。为了确保他们的故事被广泛阅读,他们必须支持 Web 可访问性要求。“手动审核发现我们的一些文章包含缺少关键属性的 HTML 元素,”Max 说。“我们想确保所有新文章都遵循最佳可访问性实践,但没有一个系统性的、自动化的方式来大规模地发现这些差异。”

解决方案

该团队知道他们需要构建一个自动化系统来评估可访问性和性能差异。他们首先转向 Node,但遇到了复杂性问题。“使用 Node 来完成像下载页面和查看页面这样简单的事情,非常复杂,”Max 说。“进行 GET 请求、解析 URL、解析重定向,所有这些都需要评估和安装库。”但使用 Deno,它原生支持 Web 标准 API,相同的脚本变得简单得多。“与 Node 和 npm 不同,Deno 没有依赖膨胀的风险。”

他们还喜欢使用 Deno 的原生 TypeScript 支持。“卫报传统上使用 Scala 编写其大部分服务器代码,其中强类型化是必须的。TypeScript 的普及率一直在稳步增长,但对于非捆绑应用程序来说,它很难使用。能够在没有配置的情况下编写和执行 TypeScript,帮助我们的团队更快地行动,”Max 说。

他们的自动化系统每天在 GitHub Actions 上运行 Deno 脚本, 检查缺少的 HTML 属性,以及 图像、字体和其他媒体等资产的大小,以评估可访问性和性能。该作业发现的任何偏差都将更新这些 GitHub 问题,以便他们的团队进行调查。

“Deno 使我们能够轻松地创建一个解决方案来覆盖我们的基础,从而确保我们的故事能够被尽可能广泛的读者阅读,”Max 说。