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

浏览器的基础渲染机制

时间:2023-03-08 10:39:47 网络应用技术

  浏览器的基础渲染机制:当我们从服务器中获取代码时,浏览器如何使用代码渲染CRP(密钥渲染路径)页面的性能优化规则及相关效果:优化同步和JS中的同步编程

  当我们从服务器获取HTML代码时,浏览器将分配“ GUI渲染线程”从上到下分析代码

  生成DOM树后,等待CSS资源获取它。目前,根据CSS写作顺序,CSS代码(GUI渲染线程)生成CSSDOM树的渲染和分析:计算每个节点的样式(包括某些样式是样式的样式,是样式的样式,是该样式的样式样式是样式。信息等)

  将DOM树和CSSOM树合并在一起,生成渲染树!

  根据当前视觉窗口的大小,计算视图中每个节点的位置和大小

  计算每个层中每个节点的特定图形规则(每个文档)

  根据计算的规则,按一层绘制一个

  我们最好将所有CSS合并为一个,只有所有样式才能获得所有样式。多个请求,因为HTTP的并发限制以及可能的网络拥塞和其他问题导致它与请求!IntersectionCSS合并到Sprite Map中的速度!因为它会阻碍GUI的渲染;如果CSS样式代码不多用于嵌入式样式(尤其是移动终端开发);但是,如果有很多代码,您仍然使用链接外部链接(但是最好将链接放在中间);必须处理图片懒惰的加载:在渲染第一个渲染页面时,请勿让图片资源请求在有限的HTTP上进行有限的HTTP。在CSS/JS资源获取中优先考虑进行线程和宽带资源;当页面和表面渲染完成后,然后根据图片加载真实图片转到查看端口;结构已加载,然后获取和分析JS(此时,您可以在页面中获取DOM元素)或者您可以根据事件监控来处理窗口。加载:等待页面中的所有资源(包括dom struction/css/js和其他资源)触发窗口.addeventListener('domcontentloaded'iNtersectionInterttersection您还可以设置异步异步异步属性属性异步设置异步或递延属性,渲染同步:遇到新的HTTP来获得资源,GUI将继续呈现;获得资源后,立即结束GUI渲染,并且JS引擎线程用于渲染JS;在渲染JS代码后,执行GUI渲染!defer获得异步,渲染是相同的:encounter,tossInd,分配,分配,分配HTTP获得资源,此时GUI继续呈现;当DOM结构完成并获得延期的JS资源时 根据先前书面的JS订单,渲染JS的分析以依次分析JS!Async的特征是:只要获得JS代码,它将立即执行。无论写作顺序如何,当没有依赖性时,它都适合JS。

  延期的特征是:您必须等待GUI和所有JS代码设置延期才能获得它。按照先前的写作顺序,渲染和分析依次,即资源的实现和异步获取。

  加速DOM树的构造,以减少符合W3C规范的语义标签的HTML层次嵌套使用...加速CSSOM Tree的构造选择器层次嵌套。左右)减少了CSS表达式的使用...性能:大多数性能都消耗了第一个渲染图和绘画(重新绘制);第一个渲染完成后:

  餐厅(回流):如果浏览器的视口大小会更改或页面中元素的位置更改,或者“ DOM结构”更改(删除,添加新元素或移动位置)...浏览器需要重新 -re -reinstateCalcalculter在视口(即,层)中的最新位置(即重新划分),然后在完成后进行分层并重新绘制!--->此操作非常消耗,因此我们应该最小化数字尽可能多的恢复活力(返回)

  重新绘制:视口/元素的位置不变,但是它修改了一些基本样式(例如:背景颜色,文本颜色,透明度...)。目前,我们不需要重新安装,我们只需要重新涂抹!---->重新绘制操作是不可避免的。只要您想首次更改页面,就可以再次更改它,并且必须重新绘制;而且,如果您触发退款,您将不可避免地体验到赎回!

  基于VUE/React/Angular等框架的开发,我们避免了基于“数据驱动视图渲染”的DOM的直接操作。我们只需要操作数据并帮助我们在框架内操作DOM(他们已经做了很多操作来减少DOM)交叉点

  阅读和写作分离

  浏览器的新版本具有“渲染队列机制”:在当前上下文代码执行过程中,修改元素样式的操作不会立即修改样式,而是将其移至渲染队列;该代码继续向下换取...当执行代码时,此时,渲染队列的所有操作将均匀执行(仅一次触发一次);然后“刷新渲染队列”(即,执行操作,执行操作当前队列一次),然后再次引起!交叉分开操作和修改样式的操作以分离批处理新元素

  根据模板字符串实现新添加的批次