网络的瓶颈

Avatar of Chris Coyier
Chris Coyier

DigitalOcean 为您的旅程的每个阶段提供云产品。从 200 美元的免费积分 开始!

Steve Souders,“JavaScript 主宰浏览器 CPU”

十年前,网络是主要瓶颈。如今,主要瓶颈是 JavaScript。页面上的 JavaScript 量正在快速增长(过去 7 年增长了近 5 倍)。为了保持页面渲染并保持快速感觉,我们需要关注 JavaScript CPU 时间以减少阻塞浏览器主线程。

Alex Russell,描述了 Chrome 中“永不缓慢模式”的原型

… 阻止大型脚本,为特定资源类型(脚本、字体、css、图像)设置预算,关闭 document.write(),覆盖同步 XHR,普遍启用客户端提示,以及缓冲未设置 Content-Length 的资源。

Craig Hockenberry,在 WebKit 错误跟踪器中发布了 一个想法

如果没有限制,JavaScript 开发人员就没有任何动力去保持其代码库小巧,并使依赖关系最小化。添加另一个框架很容易,然后该框架又添加了另一个框架,接下来你就会知道,你正在加载数兆字节的数据,仅仅是为了显示数百千字节的内容。…

我所设想的情况是,网站可以显示任何他们想要的广告,只要他们将总大小保持在固定范围内,比如每页 1 兆字节。如果他们努力使他们的网站高效,我很乐意提供我的眼球。

将手指指向框架和第三方脚本的大量 JavaScript 很容易。如果您有兴趣了解更多关于框架大小的信息,您可能会喜欢 我和 Dave 与 Jason Miller 讨论它

说到第三方,Patrick Hulce 创建了 Third Party Web:“这份文件总结了哪些第三方脚本对当今网络上过度的 JavaScript 执行负有最大责任。”

有时,点名道姓是一种有效的策略,可以激发改变。

Addy Osmani 写了关于 一个 ESLint 规则,该规则禁止特定包,您可以使用它来防止使用已知庞大的包。因此,如果有人试图加载整个 lodash 或 moment.js,它可以在代码检查级别被阻止。

Tim Kadlec 在 “限制 JavaScript?” 中很好地将这些线索联系在一起。如果你对此的本能反应是 JavaScript 被不公平地视为反派,Tim 承认

我看到人们表达的一个普遍担忧是“如果是 JavaScript,为什么不限制其他资源呢?”。的确,JavaScript 确实经常被挑剔,但并非没有理由。就字节而言,JavaScript 是网络上性能最显著的损害,因此将重点放在减少我们使用的数量确实有意义。

然而,这一点是有效的。JavaScript 可能是最常见的罪魁祸首,但它并非唯一一个。