Html CSSOM和DOM创建是异步的吗?

Html CSSOM和DOM创建是异步的吗?,html,css,dom,web,cssom,Html,Css,Dom,Web,Cssom,我已经读到CSSOM创建是网页性能的瓶颈。但是似乎有一些解决方法,比如将media属性添加到样式表链接。我试图了解如何优化我的web应用程序,遇到了这个非常有趣的问题,但无法理解CSSOM和DOM创建的顺序 我看到一些关于CSS文件异步加载的参考,但答案不是很清楚。当然,这是关于加载而不是对象模型创建的 我的问题是:CSSOM创建和DOM创建是并行还是顺序进行的?是的,CSSOM和DOM创建是异步进行的,并且只是逻辑上的。我建议您从深入讨论和解释类似主题的地方开始 当浏览器从网络请求接收到网页或

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

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


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

是的,CSSOM和DOM创建是异步进行的,并且只是逻辑上的。我建议您从深入讨论和解释类似主题的地方开始

  • 当浏览器从网络请求接收到网页或从磁盘读取网页时,DOM构造就开始了。它开始对
    html
    进行“解析”并对其进行“标记化”,创建一个我们知道的节点DOM树

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

  • 预计它将需要此资源来呈现页面,它将 立即发送对此资源的请求

  • CSS规则再次被标记化,并开始形成我们所称的CSSOM。在解析整个网页时,最终生成CSSOM树,然后应用于DOM树中的节点
  • 当计算页面上任何对象的最终样式集时,浏览器从适用于该节点的最通用规则开始(例如,如果它是body元素的子元素,则应用所有body样式),然后通过应用更具体的规则递归地细化计算出的样式-即规则“级联”

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

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


    PS:我再次强烈建议您通读一遍,以获得更好的见解。

    谢谢。事实上,当我提出这个问题时,我正在研究Google web性能基础知识。问题中提到了:)