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