CSSOM和DOM创建是异步的吗?



我读到CSSOM创建是网页性能的瓶颈。但是似乎有一些方法可以解决这个问题,比如将media属性添加到样式表链接中。我试图了解如何优化我的web应用程序,遇到了这个非常有趣的链接,但无法理解CSSOM和DOM创建发生的顺序。

这里我看到了一些关于异步加载CSS文件的参考,但是答案不是很清楚。当然,这是关于加载,而不是对象模型的创建。

我的问题是:CSSOM创建和DOM创建是并行的还是顺序的?

是的,CSSOM和DOM的创建是异步发生的,它只是逻辑上的。我建议你从Google Web fundamentals开始学习,这里深入讨论和解释了渲染等主题。

  1. DOM构建在浏览器从网络请求接收网页或从磁盘读取网页时立即开始。它开始"解析"html并"标记"它,创建一个我们知道的节点DOM树。

  2. 在解析和构造DOM树时,如果在head或任何其他部分中遇到链接标记,则引用外部样式表。

预期它将需要这个资源来呈现页面,它立即调度对该资源的请求,…

CSS规则再次被标记化,并开始形成我们所说的CSSOM。随着整个网页的解析,最后生成CSSOM树,然后将应用于DOM树中的节点。

当计算页面上任何对象的最终样式集时,浏览器从适用于该节点的最通用规则开始(例如,如果它是body元素的子元素,则应用所有body样式),然后通过应用更具体的规则递归地细化计算出的样式-即规则"级联"

我们都注意到,在慢速连接上,DOM首先加载,然后应用样式,网页看起来完成了。正是因为这个根本原因——CSSOM和DOM是独立于数据结构。

我希望它能回答你的问题,并为你指明正确的方向。

PS:我再次强烈建议,阅读谷歌网页性能基础知识,以获得更好的见解。

相关内容

  • 没有找到相关文章

最新更新