领先的独立出版物《卫报》需要一个轻量级、低维护的解决方案来审计其文章的性能和可访问性。了解《卫报》如何在关键基础设施中使用 Deno 来审计其 270 万篇文章的可访问性和性能。
挑战
《卫报》网站每月收到超过 3.5 亿的独立页面浏览量。为了满足读者的期望,他们的网站不仅必须针对性能进行优化并尽可能快速地提供内容,还必须支持各种 Web 可访问性要求。
作为一个大型媒体网站,每一毫秒都很重要。 据 BBC 称,页面加载时间每增加一秒,就会导致 10% 的用户离开。“我们需要一种方法来确保我们的资源在发布到我们的网站时得到优化,”网站高级软件工程师 Max Duval 说。
除了性能之外,工程师们还认识到,他们的许多读者使用各种辅助技术来消费他们网站上的内容。为了确保他们的故事被广泛阅读,他们必须支持 Web 可访问性要求。“人工审计显示,我们的一些文章包含缺少关键属性的 HTML 元素,”Max 说。“我们想确保任何新文章都遵循最佳可访问性实践,但我们没有系统化的自动化方法来大规模地发现这些差异。”
解决方案
该团队知道他们需要构建一个自动化系统来评估可访问性和性能差异。他们最初转向 Node,但遇到了复杂性问题。“使用 Node 做一些像下载页面并查看它这样简单的事情都非常复杂,”Max 说。“执行 GET 请求、解析 URL、解决重定向,所有这些都需要评估和安装库。”但是使用 Deno,它原生支持 Web 标准 API,同样的脚本就简单得多。“使用 Deno 不存在像 Node 和 npm 那样的依赖膨胀的风险。”
他们也很喜欢使用 Deno 对 TypeScript 的原生支持。“《卫报》传统上在其大多数服务器代码中使用 Scala,其中强类型是既定的。TypeScript 的受欢迎程度稳步增长,但它很难用于非捆绑应用程序。能够无需配置即可编写和执行 TypeScript 帮助我们的团队更快地行动,”Max 说。
他们的自动化系统每天在 GitHub Actions 上运行 Deno 脚本,以检查是否缺少 HTML 属性,以及资源大小(如图像、字体和其他媒体),以评估可访问性和性能。该作业发现的任何偏差都将更新这些 GitHub 问题,供他们的团队调查。
“Deno 使我们能够轻松快速地启动一个解决方案来覆盖我们的基础,这有助于确保我们的故事能够被尽可能广泛的读者群体消费,”Max 说。