重绘 回流 以及浏览器解析URL和渲染整个页面

前言

在文档重新加载的时候,浏览器引擎会解析html来生成dom树,之后根据DOM元素的几何属性构建一棵用于渲染的树。渲染树的每个节点都有大小和边距等属性,类似于盒子模型(由于隐藏元素不需要显示,渲染树中并不包含DOM树中隐藏的元素)。当渲染树构建完成后,浏览器就可以将元素放置到正确的位置了,再根据渲染树节点的样式属性绘制出页面。由于浏览器的流布局,对渲染树的计算通常只需要遍历一次就可以完成。

重绘(repaint)

当元素样式的改变不影响布局时,浏览器将使用重绘对元素进行更新,此时由于只需要 UI 层面的重新像素绘制,因此损耗较少。

常见的浏览器重绘操作:改变元素颜色 改变元素背景色 改变visibility/outline

回流(reflow)

又叫重排(layout)。当元素的尺寸、结构或者触发某些属性时,浏览器会重新渲染页面,称为回流。此时,浏览器需要重新经过计算,计算后还需要重新页面布局,因此是较重的操作。

常见的浏览器回流操作:页面初次渲染 浏览器窗口大小改变 元素尺寸/位置/内容发生改变 元素字体大小变化 添加或者删除可见的 DOM 元素 激活 CSS 伪类(:hover……)
重点:回流必定会触发重绘,重绘不一定会触发回流。重绘的开销较小,回流的代价较高。*
想清楚了以上的两个概念,在前端中为什么要使用防抖(debounce)节流(throttle)就显得格外的重要。

这张图就能很好的说明重绘和回流以及防抖和节流的总要性

那么,在工作中我们要如何避免大量使用重绘与回流呢?:
1.避免频繁操作样式,可汇总后统一一次修改
2.尽量使用class进行样式修改,而不是直接操作样式
3.减少 DOM 的操作,可使用字符串一次性插入

浏览器解析URL

1.用户输入 URL 地址。
2.对 URL 地址进行 DNS 域名解析成ip地址。
3.建立 TCP 连接(三次握手)
4.浏览器发起 HTTP 请求报文。
5.服务器返回 HTTP 响应报文。
6.关闭 TCP 连接(四次挥手)
7.浏览器解析文档资源并渲染页面。

image.png

什么是DNS域名解析?

DNS(Domain Name System)是 域名系统 的英文缩写,提供的服务是用于将主机名和域名转换为 IP 地址的工作

  1. 浏览器根据地址,在 自身 的缓存中查找DNS(域名服务器)的解析记录,如果有则直接返回 IP 地址。如果没有,则查找 操作系统中host文件 的DNS解析记录,如果有也就直接返回IP地址。
  2. 如果在1的条件上(自身缓存没有,操作系统host文件也没有解析记录),则直接向该 域名服务器 发起请求解析这个域名。
  3. 先向 本地域名服务器 中请求,让它解析这个域名,如果解析不了,则向 根域名服务器 请求解析。
  4. 根服务器本地域名服务器 返回一个 主域名服务器
  5. 本地域名服务器主域名服务器 发起解析请求。
  6. 主域名服务器 接收到解析请求后,查找并返回域名对应的域名服务器的地址。
  7. 域名服务器会查询存储的域名和 IP 的 映射关系表 ,返回 目标 IP 记录 以及一个 TTL(Time To Live)值
  8. 本地域名服务器接收到 IPTTL 值,进行缓存,缓存的时间由 TTL 值控制。
  9. 将解析的结果返回给用户,用户根据 TTL 值 缓存本地系统 缓存中,域名解析过程结束。
    更详细的解释:https://juejin.im/post/5c88b8f7518825068d1d1d7e#heading-0
    image.png
TCP三次握手

TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。简单来说,它的作用就是将数据流从一台主机可靠地传输到另一台主机。

  1. 第一次握手:起初两端都处于 CLOSED 关闭状态,Client 将标志位 SYN 置为 1,随机产生一个值 seq = x,并将该数据包发送给 ServerClient 进入 SYN-SENT 状态,等待 Server确认。
  2. 第二次握手:Server 收到数据包后由标志位SYN = 1 得知 Client请求建立连接,Server 将标志位 SYNACK 都置为 1,ack = x + 1,随机产生一个值 seq = y,并将该数据包发送给Client以确认连接请求,Server 进入 SYN-RCVD 状态,此时操作系统为该 TCP 连接分配 TCP 缓存和变量。
  3. 第三次握手:Client 收到确认后,检查 seq 是否为 x + 1ACK 是否为 1,如果正确则将标志位 ACK 置为 1,ack = y + 1,并且此时操作系统为该 TCP连接分配 TCP 缓存和变量,并将该数据包发送给 ServerServer 检查 ack 是否为 y + 1ACK 是否为 1,如果正确则连接建立成功,ClientServer 进入 established 状态,完成三次握手,随后 ClientServer 就可以开始传输数据。
    TCP三次握手
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,816评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,729评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,300评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,780评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,890评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,084评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,151评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,912评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,355评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,666评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,809评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,504评论 4 334
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,150评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,882评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,121评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,628评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,724评论 2 351