谷歌宣布了一种运行 JavaScript 的新方法,可以提高网页响应能力,帮助使用它的网站在新的核心网络重要指标中击败竞争对手。

该公告提供了一种增强网页性能的方法。如果这次试验成功,那么所有内容管理平台可能都希望使用它,以便领先于竞争对手。

Google 正在解决的问题

与下一次绘制的交互 (INP) 是替代首次输入延迟 (FID) 的指标。INP 计划于 2024 年 3 月作为核心 Web 重要指标上线。为了在即将到来的 INP 核心网络至关重要中取得好成绩,网页需要响应每一个可能的用户交互。

导致 INP 分数不佳的原因之一是某些 JavaScript 需要很长时间才能运行。当这些脚本需要很长时间才能运行时,它们被称为长任务。长任务的问题在于,它们就像道路上的慢速司机,在快车道上行驶,减慢了交通速度。

目前发生的情况是,控制用户交互的脚本被长任务阻塞,导致网页无响应。在这种情况下,用户在单击按钮后会等待页面执行某些操作。

如今,许多网页中通常发生的情况是用户交互必须等到长任务完成运行。下图显示了长任务如何阻止重要的用户交互任务运行。

长任务阻塞用户交互脚本


谷歌提出的解决方案是解决这个问题,让这项长任务就像一辆缓慢的汽车停在路边,让快速车通过。

现有策略不起作用

已经有一些编码解决方法可以帮助提高用户交互分数。但它们实际上并不能很好地工作,因为它们是为了解决其他问题而不是用户交互问题而设计的。

谷歌的解释者表示,现有的策略会暂停长任务,但将其发送到所有其他脚本队列的后面,其中许多脚本可能不如长任务那么重要。

在这种典型场景中,必须完成的长任务必须等到不太重要的脚本完成,因为它现在位于队列的后面。当前的编码解决方法最终可能会造成更糟糕的情况。

长任务的解决方案是scheduler.yield

解决长任务问题的方法是 Google 称为Scheduler.yield的方法。Scheduler.yield 的作用是暂停长任务,以便让出用户交互任务开始运行。一旦用户交互脚本完成,长任务就能够跳到队列的头部并再次开始运行。这是 Google 发布的插图,展示了如何将长任务分解为较小的任务,以便运行重要的用户交互脚本。

Scheduler.yield 工作原理图解

Scheduler.Yield 的原始试验

7 月 13 日发布的 Chrome 115 以来,就可以运行 Scheduler.yield 了。谷歌正在要求志愿者在“原始试验”中测试这项新功能,以便收集反馈以了解它在现实世界中的工作原理,然后最终将其作为正式功能。原始试验是参与测试新功能的机会(此处有关原始试验的信息https://developer.chrome.com/docs/web-platform/origin-trials/)。

谷歌的公告解释道:

“为了不断努力提供新的 API,帮助 Web 开发人员使他们的网站尽可能快捷,Chrome 团队目前正在从 Chrome 版本 115 开始运行 Scheduler.yield 的原始试验。

Scheduler.yield 是计划程序 API 的一个拟议的新补充,与传统上依赖的方法相比,它允许以一种更简单、更好的方式将控制权交还给主线程。”

在实时网站上运行 Scheduler.yield 的潜在问题之一是,需要为非 Chrome 115 浏览器编写后备代码,以便该网站能够为非 Chrome 115 且不支持该功能的网站访问者正常工作。

还有一种方法可以在本地运行进行测试:

“如果您想在本地试验 Scheduler.yield,请在 Chrome 的地址栏中输入 chrome://flags,然后从“实验性 Web 平台功能”部分的下拉列表中选择“启用”。

这将使 Scheduler.yield (以及任何其他实验性功能)仅在您的 Chrome 实例中可用。”

超越竞争对手的机会

这项新功能目前正处于测试模式。但鉴于 INP 计划于 2024 年 3 月成为官方核心网络重要指标,因此关注这一新的 Chrome 功能并在实验阶段结束后尽早采用它可能会有所帮助。只要为尚未采用新功能的浏览器提供后备措施,现在采用它可能是领先于竞争对手的好方法。

阅读官方公告:

介绍scheduler.yield原始试验:
https://developer.chrome.com/blog/introducing-scheduler-yield-origin-trial/

注册 Scheduler.yield 原始实验

https://developer.chrome.com/origintrials/#/view_trial/836543630784069633

阅读有关优化长任务的解释:https://web.dev/optimize-long-tasks/

访问 Scheduler.yield api 的 GitHub 解释器页面:

https://github.com/WICG/scheduling-apis/blob/main/explainers/yield-and-continuation.md

翻译整理作品,原作者:Roger Montti

关于网站速度的其他文章:

Core Web Vitals :页面速度现在对 SEO 更为重要

最大内容绘制 (LCP) – 定义、测量以及如何修复

Google SEO: 累积布局偏移 (CLS) – 定义、测量以及如何修复

Google SEO: 首次输入延迟 (FID) – 定义、测量和修复方法

Google SEO: 如何使用 PageSpeed Insights



点赞(1) 打赏

评论列表 共有 0 条评论

暂无评论

服务号

订阅号

备注【拉群】

商务洽谈

微信联系站长

发表
评论
立即
投稿
返回
顶部