关于硬件渲染了解一下

2023-05-16

浏览器的渲染方式,主要分为两种,第一种是软件渲染,第二种是硬件渲染。如果绘制工作只是由 CPU 完成,那么称之为软件渲染,如果绘制工作由 GPU 完成,则称之为硬件渲染。软件渲染与硬件渲染有不同的缓存机制,只要我们合理利用,就能发挥出最好的效果。

开启

浏览器还有一种名为硬件渲染的渲染方式,它是使用 GPU 的硬件能力来帮助渲染页面,那么是怎么设置的?

  • 启用硬件加速 在chrome的地址栏中输入chrome://settings/回车滚动页面到地步,点击显示高级设置再次滚动到页面地步,找到使用硬件加速模式
  • 开启gup硬件加速 在chrome的地址栏中输入chrome://flags/#disable-accelerated-video-decode找到硬件加速的视频解码,点击启用

完成上面两步后重启浏览器

能做什么

大家都知道在页面性能优化的时候都会用到 GPU 加速硬件加速类似方式,浏览器一帧(1000/16ms)会依次执行以下,减少或者避免 layout,paint 可以让页更加流畅:

  1. JavaScript:JavaScript 实现动画效果,DOM 元素操作等。
  2. Style(计算样式):确定每个 DOM 元素应该应用什么 CSS 规则。
  3. Layout(布局):计算每个 DOM 元素在最终屏幕上显示的大小和位置。由于 web 页面的元素布局是相对的,所以其中任意一个元素的位置发生变化,都会联动的引起其他元素发生变化,这个过程叫 reflow。
  4. Paint(绘制):在多个层上绘制 DOM 元素的的文字、颜色、图像、边框和阴影等。
  5. Composite(渲染层合并):按照合理的顺序合并图层然后显示到屏幕上。

一个页面是由多个图层最后形成一个完整的合成层才被渲染出来效果就像这样:

硬件渲染 WebKit 会依据指定条件决定将那些 RenderLayer 对象组合在一起形成一个新层并缓存在 GPU,这些新层我们统称为合成层(Compositing Layer)。这些合成层提升成独立的层,被独立出来之后,便不会再影响其他 dom 的布局。如果发生 偏移、透明度等等变换 GPU 要做的只是把更新的合成层进行相应的变换并送入 Compositor 重新合成即可,利用这个优点我们可以把页面中一些布局经常变换的 dom 提升到独立的层。

在上图中黄色边框表示放到了一个新的复合层(composited layer)中渲染,左侧的列表里列出页面里存在哪些渲染层,右侧的 Details 显示的是这些渲染层的详细信息,包括渲染层的大小、形成原因等。

如何触发合成层

  1. 根节点 document
  2. HTML5 Video或者Canvas元素。
  3. 元素有一个 z-index 较低且包含一个复合层的兄弟元素
  4. 3D 或透视变换(perspective,transform) CSS 属性 比如常用的 (设置translateZ()、backface-visibility为hidden)

注意事项

也就是上面第三条,英文原版是这么说

Element has a sibling with a lower z-index which has a compositing layer (in other words the it’s rendered on top of a composited layer)

意思是,如果有一个元素,它的兄弟元素在复合层中渲染,而这个兄弟元素的z-index比较小,那么这个元素(不管是不是应用了硬件加速样式)也会被放到复合层中。

所以用轮播、动画loading等页面的时候要注意下要遵循最小化影响原则,如果调试看到有很多 黄色边框 就要注意了。

使用 3D 硬件加速提升动画性能时,最好给元素增加一个 z-index 属性,人为干扰复合层的排序,可以有效减少 chrome 创建不必要的复合层,提升渲染性能,移动端优化效果尤为明显。

关于 CSS3 will-change

前面说的那些有点hach,CSS3 will-change 才是正规军是属于 web 标准属性,兼容性这块 Chrome/FireFox/Opera 是支持的,他是提前通知浏览器元素将要做什么动画,让浏览器提前准备合适的优化设置,具体值:

/* 关键字值 */
will-change: auto;
will-change: scroll-position;
will-change: contents;
will-change: transform;        /* <custom-ident>示例 */
will-change: opacity;          /* <custom-ident>示例 */
will-change: left, top;        /* 两个<animateable-feature>示例 */

/* 全局值 */
will-change: inherit;
will-change: initial;
will-change: unset;
复制代码

will-change 虽然可以加速,但是不可滥用。。。

转载于:https://juejin.im/post/5ad5dffd6fb9a028bd4cd31f

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

关于硬件渲染了解一下 的相关文章

  • 手机游戏获取不了服务器信息,手机获取游戏服务器

    手机获取游戏服务器 内容精选 换一换 云手机实例是以整台服务器的形式购买的 xff0c 在购买时选择不同手机开数的实例规格 xff0c 最终可获得的云手机数量也不一样 本章节将为您详细介绍购买服务器的操作步骤 登录管理控制台 在服务列表页
  • 在线枚举内核模块函数及地址(win64位)

    include lt Windows h gt include lt stdio h gt include lt string gt include lt psapi h gt include 34 dbghelp h 34 include
  • UIcollectionView 加入尾部视图

    2019独角兽企业重金招聘Python工程师标准 gt gt gt static NSString identify 61 64 34 collectionViewCell 34 static NSString identifier 61
  • Python 解压缩Zip和Rar文件到指定目录

    author 61 39 Joker 39 coding utf 8 import urllib import os import os path import zipfile from zipfile import import sys
  • openstack安装报错及处理

    如下启动amqp服务时失败 xff1a Applying 192 168 0 109 mariadb pp 192 168 0 109 amqp pp ERROR Applying Puppet manifests ERROR ERROR
  • 64654646

    6456467777
  • 微软HPC解决方案概述与实作

    HPC解决方案是微软产品历史长河中的一个砂砾 xff0c 国内很少有人提及 xff0c 因此老王准备把这个砂砾擦擦 xff0c 为大家呈现出来 开始之前我们不妨先来看下HPC的概念 xff0c 前面我们花了将近50篇左右的文章 xff0c
  • WKWebView不显示JS的alert弹窗的解决办法

    首先要设置WKWebView的代理 self webView UIDelegate 61 self span class copy code btn 复制代码 span 实现以下三个代理方法即可 span class hljs commen
  • c语言中阻止程序退出的函数,简要对比C语言中三个用于退出进程的函数

    C语言 exit 函数 xff1a 结束进程执行头文件 xff1a include 定义函数 xff1a void exit int status 函数说明 xff1a exit 用来立刻结束目前进程的执行 并把参数status 返回给父进
  • SQL Server 2016 JSON原生支持实例说明

    背景 Microsoft SQL Server 对于数据平台的开发者来说越来越友好 比如已经原生支持XML很多年了 xff0c 在这个趋势下 xff0c 如今也能在SQLServer2016中使用内置的JSON 尤其对于一些大数据很数据接口
  • opencv MatExpr MatOp

    opencv提供了很多Mat的操作 xff0c 其中涉及到两个重要的类 xff1a MatOp和MatExpr C 43 43 MatExpr abs const Mat amp m C 43 43 void absdiff InputAr
  • linux程序中文乱码转换,Linux下汉字编码的转换(gbk转换为utf8)

    因为项目的需要linux下将GBK编码转换为utf8编码 xff0c google一下 xff0c 网上的相关资源比较少 xff0c 下面的操作经过本人的反复试验 本例子同样适用于其他的编码转换 有gbk到utf8的转换过程 xff0c 需
  • debian系统下安装ssh服务

    它是什么 xff1f xff1f SSH 为 Secure Shell 的缩写 xff0c 简单地说 xff0c SSH 为建立在应用层基础上的安全协议 SSH 是目前较可靠 xff0c 专为远程登录会话和其他网络服务提供安全性的协议 利用
  • LinuxC编程视频教程

    linux c基础 共21集 xff09 xff1a http www 21edu8 com pcnet programming 29943 show html 29943 0 0 转载于 https blog 51cto com 1054
  • JSON_VALUE

    本页目录 语法入参功能描述示例 语法 span class pln style color rgb 0 0 0 VARCHAR JSON VALUE span span class pun style color rgb 102 102 0
  • 32131313

    32131313131311 55555555 hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh test2222222 test333333333 hhhhhhhhhhhhhhhhhhhhhh
  • aida64使用方法_AIDA64中的详细功能使用步骤介绍

    你们知道AIDA64吗 很多的新用户不熟悉AIDA64是怎么使用的 在这里就为你们呈现了AIDA64的详细使用步骤介绍 1 使用AIDA64查看电脑简单信息 打开计算机 系统概述 xff0c 即可查看计算机的一些基本参数包括CPU xff0
  • 万能平板刷机软件_平板电脑怎么刷机 平板电脑刷机方法【教程】

    摘要 xff1a 刷机简单说就是给平板电脑重装系统 xff0c 跟电脑重装系统一样 正常情况下 xff0c 只要硬件没有问题 xff0c 那么就99 99 可以通过刷机搞定你平板上碰到的问题 刷机真的这么神奇么 那么要怎样给平板电脑刷机呢
  • python中strftime函数_Python strftime()用法及代码示例

    在Python中 xff0c 日期和时间不是其自身的数据类型 xff0c 而是名为 strftime 函数用于将日期和时间对象转换为其字符串表示形式 它需要一个或多个格式化代码输入 xff0c 并返回字符串表示形式 用法 strftime
  • signature=cc29255b4425ca4c96b4511e5937abfa,http

    Message ID lt 458798778300 OQB26387 64 intrigue eastciti com gt MIME Version 1 0 Content Type multipart related boundary

随机推荐

  • php ajax等待返回,Ajax对PHP的调用未返回任何内容

    我正在尝试使我的第一个ajax示例在我的MAMP上运行 我的ajax html看起来像 xff1a 我的ajax js看起来像 xff1a 函数ajax gt gt var xmlhttp 如果 window XMLHttpRequest
  • epg信息服务器,EPG系统及EPG信息的实时更新方法

    1 一种EPG系统 包括 播出系统 1 xff0c 所述播出系统 I 包括节目单编辑模块 11 播出在线控制模块 12 和节目单网关模块 13 xff0c 所述节目单网关模块 13 根据节目单编辑模块 11 编辑的节目数据生成EPG信息 x
  • 大华服务器u盘做系统,#测评大玩家#大华P609双接口U盘轻松备份资料

    这些年随着智能手机和5G网络的普及 xff0c 很多人分享资料的时候 xff0c 都习惯使用即时聊天工具 xff0c 对于一些体积较大的文件 xff0c 则是用网盘来完成 不过现在消费者的隐私保护意识越来越高 xff0c 各种网盘服务的价格
  • coursera 计算概论与程序设计基础(李戈)-第二题

    判断闰年 正常情况下一年有365天 xff0c 但是闰年的时候 xff0c 一年有366天 现在给定一个年份 xff0c 请你判断它是不是闰年 凡是能被4整除的年是闰年 xff1b 但逢百之年 xff0c 能被4整除的并不是闰年 xff0c
  • Debian 7 安装使用 Virtualbox及增强功能

    一 安装virtualbox 可以从源里安装 sudo apt get install virtualbox 也可以下载最新版安装 https www virtualbox org wiki Downloads 二 安装增强功能 安装增强功
  • 《你必须知道的.NET》第二次印刷,未来与梦想

    你必须知道的 NET 网站 Anytao技术博客 你必须知道的 NET 第二次印刷 xff0c 未来与梦想 发布日期 xff1a 2008 11 20 作者 xff1a Anytao 2008 Anytao com xff0c Anytao
  • 51学习计划最后

    hhhhhhhhhhh 来了11111111111111111111111111111111111111111111111111111111111111111111111 555 4444 66 77 88 99 00 61 61 61 6
  • sql 跨数据库读取数据库中的数据

    跨数据库读取数据库中的数据 创建链接服务器 右键单击 连接服务器 xff0c 弹出 xff1a 点击 安全性 xff0c 弹出 xff1a 输入连接到的数据库的登陆名和密码 这样链接服务器就创建完成了 这样就可以通过链接服务器的方式查询到链
  • Android系统定制之SystemUI修改:下拉通知栏尺寸【转】

    本文转载自 xff1a https blog csdn net huil0925 article details 67632358 最近项目需要修改下拉通知栏面板的宽度 xff0c 完成后 xff0c 写个Blog做个总结 xff0c 也提
  • git只拉取github部分代码的方法

    需求 xff1a github某个项目所有代码太大 xff0c 有600 43 M xff0c 甚至更大 xff1b 只需要拉取部分代码 xff0c 一是可以降低网络消耗 xff0c 二是可以降低磁盘占用 分析了下空间占用情况 xff1a
  • MatLab计算图像圆度

    本文所述方法可以检测同一图像中的多个圆形 xff08 准确的说 xff0c 应该是闭合图像 xff09 在Matlab2010a中可以实现 附录效果图 xff1a 颗粒圆度 clear close all 读取源图像 I 61 imread
  • RSA签名的PSS模式

    本文由云 43 社区发表 作者 xff1a mariolu 一 什么是PSS模式 xff1f 1 1 两种签名方式之一RSA PSS PSS Probabilistic Signature Scheme 私钥签名流程的一种填充模式 目前主流
  • 爬虫mm131明星照片

    1 39 39 39 2 1 爬取以下站点中各个明星图片 xff0c 分别单独建文件夹存放 3 起始URL地址 xff1a http www mm131 com mingxing 4 39 39 39 5 import os 6 impor
  • 使用IDEA工具配置和运行vue项目(详细其中的坑)

    刚来公司实习发现公司的前端使用的是vue xff0c 之前根本就没有听说过 然后一上来就需要看代码 xff0c but but 就是没有文档什么的东西 xff0c 就需要自己去研读 xff0c 我就想去运行其中的前端和后端联调起来方便理解
  • pycharm永久激活方式

    网上找了好多 xff0c 还是这个最方便快捷 1 下载 链接 https pan baidu com s 1axPsIaedtZDRG7lTup9b5g 密码 7vxp xff0c 并将 JetbrainsCrack 2 10 releas
  • Majority Element出现次数超过一半的数字

    Given an array of size n find the majority element The majority element is the element that appears more than n 2 times
  • C#实现WEB服务器

    一 HTTP协议的作用原理 WWW是以Internet作为传输媒介的一个应用系统 xff0c WWW网上最基本的传输单位是Web网页 WWW的工作基于客户机 服务器计算模型 xff0c 由Web 浏览器 客户机 和Web服务器 服务器 构成
  • 51学习计划

    hhhhhhhhhhh 来了11111111111111111111111111111111111111111111111111111111111111111111111 555 4444 66 77 88 99 00 61 61 61 6
  • Linux 配置静态IP

    在新安装的Linux系统命令行下 xff0c 敲入 xff1a ifconfig 显示如下界面 上面这张图显示网卡没有启动 xff0c 那么我们敲入代码 xff1a ifup eth0启动网卡 网卡启动后 xff0c 我们可以看出 xff0
  • 关于硬件渲染了解一下

    浏览器的渲染方式 xff0c 主要分为两种 xff0c 第一种是软件渲染 xff0c 第二种是硬件渲染 如果绘制工作只是由 CPU 完成 xff0c 那么称之为软件渲染 xff0c 如果绘制工作由 GPU 完成 xff0c 则称之为硬件渲染