当前位置: 首页 > 网络应用技术

DOM中浏览器的分析(重新启动和重新排列)

时间:2023-03-08 20:23:28 网络应用技术

  CSS

  摘要:从右到左,找到祖先,总共有一个元素,没有少数祖先,高效率!(快速比赛)

  可以看出,从右向右到左侧的匹配规则可以筛选出在第一步时不符合资格的叶子节点;对于页面上数十万个DOM树的情况,该节点的效率遍历方法将非常低,并且不适合采用。

  因此,浏览器遵循“从右到左”的规则来解决CSS选择器!

  重建意味着需要重新分析某些或整个渲染树,并且需要重新计算节点的标尺。

  它表现为重新划分和重新安排的元素。

  赎回是由于节点的pupa的变化或样式的样式的变化(例如:元素背景?的更改)。

  某些元素的外观被更改。

  两者之间的关系

  肯定会重新安排底漆,重新分配肯定会触发赎回。

  每个页面都需要至少返回一次+重绘画。(初始化渲染)

  重排和重新布置的成本非常激进。频繁的重新划分和重新绘制将破坏家庭的体验,并使界面显示缓慢。

  我们需要尽可能避免频繁的触发器,重新安排,尤其是重排

  什么时候发生?

  1.添加或删除可见的DOM元素;

  2.元素位置变化;

  3.元素尺寸的更改 - border,填充,框架,宽度和高度

  4.更改内容 - 如文本变化或图片大小的大小变化;

  5.页面渲染初始化;

  6.浏览器窗口的大小 - 调整大小事件时

  从上一个示例代码中,您可以看到几行简单的JS代码造成了4个团圆和6个重新启动。该团圆造成的花很大。如果下面有JS操作,它将被重新分配,并且浏览器将不会加载如此大的成本,因此浏览器执行优化的操作

  浏览器将保持队列,将所有会导致沉重并吸引到该队列的操作。当队列中的操作达到一定数量或一定的时间间隔时,浏览器将被齐平(刷新)队列,并且队列将(刷新)队列。-绘画。

  当心

  当然,这种优化不是不可用的。有时,当我们想从浏览器中获取一些风格的信息时,例如以下一些操作以确保结果的准确性,它将打破浏览器的优化策略,并迫使浏览器提前强制浏览器排队

  有几种避免的主要方法:

  了解文档片段:

  文档范围是一个容器对象(存储在内存中),可保留多个元素。当一个或多个元素更新时,该页面将不会更新。

  当操作文档范围容器中保存的所有元素时,该页面将仅通过将其插入页面进行更新,该页面与内存操作中的虚拟DOM等效。VUE使用此特征。

  从严格的意义上讲:HTTP协议只能是服务器请求服务器,服务器响应,并且服务器不能让服务器主动将消息推向客户端!然后,如果更新了服务器数据,如果要立即通知客户端,该怎么办?(即时通信要求)

  概念:短轮查询是客户端发送请求时发送请求时发送请求。服务器上的最新数据不是真正的即时消息传递。可以理解的是,他正在模拟即时消息传递。

  概念:基于短轮查询的真实时间性质,性能效果太差,得出了如此长的询问。他是基于阿贾克斯的。浏览器发送请求。服务器接收请求。等待直到更新进行响应

  概念:利用HTTP协议,流数据的传输不是具有严格意义的两条通信。

  概念:这是基于TCP协议的新的独立协议。这是服务器和客户端之间的真实 - 时间两条通信。Websocket协议与HTTP协议兼容,但它不合并HTTP协议,而仅作为HTML 5?部分。

  原始:https://juejin.cn/post/7096305439805014030