Chrome 87 重要更新解读

简介: 该版本是多年来Chrome浏览器性能获得最大提升的一次。一起来一探究竟。

作者 | 彼洋

2020年11月17日,Chrome 发布 M87,这是今年的最后一个正式版本(由于圣诞节原因,M88 稳定版推出要到2021年1月),Chrome 产品总监 Matt Waddell 在一篇博客文章中写道:该版本是多年来Chrome浏览器性能获得最大提升的一次。到底是何特性撑得起如此美誉,我们这就来一探究竟。

新增稳定功能

标签限流

即使你打开了大量标签,也只会同时聚焦在少数几个标签上,其余标签白白消耗着大量的内存和CPU。Chrome 团队通过调研发现,后台标签超过 40% 的工作消耗在JS定时器上,于是对其进行了限流,嵌套层级小于5的后台任务1s调用一次,否则会1min调用一次。这项优化会降低 Chrome 的 CPU 使用率到1/5,并且可以延长笔记本使用时间达1.25h。同时,这项优化不会影响音乐播放和通知等功能。

更多信息,请移步链接。
https://docs.google.com/document/d/11FhKHRcABGS4SWPFGwoL6g0ALMqrFKapCk5ZTKKupEk/view

遮挡跟踪

该功能可以检测到那些真正可见的窗口和标签,而不是那些已被最小化,或者已被遮挡的窗口。Chrome 可以对这些窗口和标签进行资源优化,使得启动速度加快25%,页面加载速度加快7%, 以及内存占用更小(无具体数字)。

更多信息,请移步链接。
https://docs.google.com/document/d/1Di4DiGwHamIgLYjaOpripOJQinUquUuyxuiim2-WUIs/view

前进/后退缓存

很多时候,我们需要回退到上一个页面,在移动端场景下,这个比例甚至会高达20%,Chrome 在 Android 端支持了 bfcache,可以缓存前进后退的页面,目前可以覆盖20%的场景,计划后续提升到50%。

更多信息,请移步链接。
https://web.dev/bfcache/

WebAuthn调试功能

测试网络验证功能一直都很困难,因为用户需要设备来测试代码。从 Chrome 87 开始,可以在devtools的一个新面板中模拟和调试。路径为 More options => More tools => WebAuthn,如下图所示:
image.png
更多信息,请移步链接。
https://developers.google.com/web/tools/chrome-devtools/webauthn

摄像头PTZ

有些摄像头具有平移(pan)、上下摇摄(tilt)、放大(zoom)等功能,合称PTZ,所以摄像头可以指向房间中的某个人。这不是会议室摄像头的专享功能,网络摄像头也可以支持PTZ。从Chrome 87开始,一旦用户许可,就可以控制网络摄像头的PTZ。

特性检测方式如下:

const supports = navigator.mediaDevices.getSupportedConstraints();

if (supports.pan && supports.tilt && supports.zoom) {
  // Browser supports camera PTZ.
}

像其他强大的API一样,摄像头和PTZ功能也需要用户授权。通过调用navigator.mediaDevices.getUserMedia(),可以请求PTZ功能权限。弹出的提示框如下:

image.png
调用 MediaStreamTrack.getSettings() 可以获取摄像头支持的功能。进而通过调用videoTrack.applyConstraints() 来调整其PTZ参数,代码调用如下:

function enablePan(capabilities, settings) {
  const input = document.getElementById('rangePan');
  input.min = capabilities.pan.min;
  input.max = capabilities.pan.max;
  input.step = capabilities.pan.step;
  input.value = settings.pan;

  input.addEventListener('input', async () => {
    const opts = { advanced: [{ pan: input.value }] };
    await videoTrack.applyConstraints(opts);
  });
}

相关功能,可以在该网站进行试验。https://ptz.glitch.me/

更多信息,请移步链接。https://web.dev/camera-pan-tilt-zoom/

范围请求和Service Worker

HTTP 协议范围请求(Range Request)允许服务器只发送 HTTP 消息的一部分到客户端,这在传送大的媒体文件,或者与文件下载的断点续传功能搭配使用时非常有用。它在主流浏览器中已被支持很多年,但由于历史原因,和service worker配合不佳,需要开发者绕过。从 Chrome 87 开始,在service worker内部发起范围请求,其HTTP头部可以透传出去。

更多信息,请移步链接。
https://web.dev/sw-range-requests/

新增试用功能

字体获取API

对于设计师来说,电脑本地会安装很多字体,比如企业logo字体、CAD或其他软件的专用字体。Chrome 87开始试用字体获取API,站点可以枚举本地安装的字体,供用户使用。代码调用如下:

// Query for all available fonts and log metadata.
const fonts = navigator.fonts.query();
try {
  for await (const metadata of fonts) {
    console.log(`${metadata.family} (${metadata.fullName})`);
  }
} catch (err) {
  console.error(err);
}

// Roboto (Roboto Black)
// Roboto (Roboto Black Italic)
// Roboto (Roboto Bold)

站点也可以调用底层API,获取字体的字节编码,让用户实现复杂的typography。代码调用如下:

const fonts = navigator.fonts.query();
try {
  for await (const metadata of fonts) {
    const sfnt = await metadata.blob();
    makeMagic(metadata.family, sfnt);
  }
} catch (err) {
  console.error(err);
}

更多信息,请移步链接。
https://web.dev/local-fonts/

废弃&删除的功能

iframe allow 属性的逗号分隔符

之前,iframe 的 allow 属性可以使用逗号来做分隔,但这是不标准的,应该使用分号,从Chrome 87开始,逗号分隔符会被废除。

-webkit-font-size-delta

Blink 将不再支持使用 -webkit-font-size-delta 属性,开发者应该使用 font-size 属性来替代。

更多参考
https://mp.weixin.qq.com/s/arJe36fWJh63VOh071yRpw

https://mp.weixin.qq.com/s/g3UFdV4uQDdtaooDVIJE_Q

https://blog.chromium.org/2020/10/chrome-87-beta-webauthn-in-devtools.html

https://blog.chromium.org/2020/11/tab-throttling-and-more-performance.html

https://developers.google.com/web/updates/2020/11/nic87


🔥第十五届 D2 前端技术论坛早鸟票倒计时,速抢!
一起来语言框架专场学习更多精彩内容

继去年 D2 的语言专场后,这段时间又有哪些新的语言诞生了,哪些语言规范又增加了新特性?函数式编程和函数式流编程的思想究竟如何,我们是否应该将其引入到我们的产品中?本届 D2 的语言框架专场,将邀请 RxJS 的开发者为大家介绍 RxJS 内部的结构,以及 RxJS 如何重构的又快又小。同时我们也将邀请 Google 的 V8 核心成员讲述最新 ECMAScript 新特性,以及这些特性在 TC39 讨论中如何克服困难,脱颖而出成为标准的故事。
image.png


image.png
关注「Alibaba F2E」
把握阿里巴巴前端新动向

相关文章
|
Web App开发
selenium之 chromedriver与chrome版本映射表(更新至v2.43)
selenium之 chromedriver与chrome版本映射表(更新至v2.43)
959 0
|
3月前
|
Web App开发
Chrome——谷歌浏览器chrome如何模拟其他客户端
Chrome——谷歌浏览器chrome如何模拟其他客户端
104 1
Chrome——谷歌浏览器chrome如何模拟其他客户端
|
Web App开发
chrome配置selenium操作
chrome配置selenium操作
120 0
|
Web App开发 缓存 网络协议
chrome谷歌浏览器&firefox火狐清除dns缓存的办法
chrome谷歌浏览器&firefox火狐清除dns缓存的办法
545 0
chrome谷歌浏览器&firefox火狐清除dns缓存的办法
|
Web App开发 监控 前端开发
Chrome 96又更新了5个巨巨巨好用的功能
大家好,我是零一,收到了 Chrome 96 版本的更新推送,简单看了一下,还是更新了几个挺有趣的东西的,一起来看看到底都有啥~ 先下载 Chrome Beta 版本才能体验 Chrome 96 哈
188 0
Chrome 96又更新了5个巨巨巨好用的功能
|
Web App开发 数据采集 Python
通过爬虫中的selenium控制chrome,Firefox等浏览器自动操作获取相关信息
在pycharm中导入selenium之后,我们需要通过命令行来进行操作浏览器
通过爬虫中的selenium控制chrome,Firefox等浏览器自动操作获取相关信息
|
Web App开发 前端开发 JavaScript
Chrome 88 重要更新解读
2021年1月19日,时隔两个月后,Chrome 发布 M88,一起来看看此版本的重大更新。
Chrome 88 重要更新解读
|
Web App开发 安全 前端开发
Chrome 86 重要更新解读
Chrome 86 在2020年10月推出了稳定版,现已全面应用于Android、Chrome OS、Linux、macOS 和 Windows等平台,我们一起来看下这次的重要更新。
Chrome 86 重要更新解读
|
Web App开发
chromedriver与chrome版本映射表(更新至v2.35)
看到网上基本没有最新的chromedriver与chrome的对应关系表,便兴起整理了一份如下,希望对大家有用: chromedriver版本 支持的Chrome版本 v2.
1508 0
|
Web App开发 JavaScript iOS开发
[完美]原生JS获取浏览器版本判断--支持Edge,IE,Chrome,Firefox,Opera,Safari,以及各种使用Chrome和IE混合内核的浏览器
原文:[完美]原生JS获取浏览器版本判断--支持Edge,IE,Chrome,Firefox,Opera,Safari,以及各种使用Chrome和IE混合内核的浏览器 截至自2017-08-11,支持现世已出的几乎所有PC端浏览器版本判断。
5104 0