美文网首页
HTML文档是边加载边解析、预解析

HTML文档是边加载边解析、预解析

作者: 凌晨四点打铁匠 | 来源:发表于2022-03-20 20:33 被阅读0次

HTML文档加载边解析

之前一直以为html是加载完之后才由html解析器进行解析的,学习了浏览器原理之后,才知道。HTML解析器并不是等整个文档加载完成之后再解析的,而是网络进程加载了多少数据,HTML 解析器便解析多少数据。

具体的详细流程如下:
浏览器的网络进程接收到响应头之后,会根据响应头中的 content-type 字段来判断文件的类型,比如 content-type 的值是“text/html”,那么浏览器就会判断这是一个 HTML 类型的文件,然后为该请求选择或者创建一个渲染进程。渲染进程准备好之后,网络进程和渲染进程之间会建立一个共享数据的管道,网络进程接收到数据后就往这个管道里面放,而渲染进程则从管道的另外一端不断地读取数据,并同时将读取的数据“喂”给 HTML 解析器。你可以把这个管道想象成一个“水管”,网络进程接收到的字节流像水一样倒进这个“水管”,而“水管”的另外一端是渲染进程的 HTML 解析器,它会动态接收字节流,并将其解析为 DOM。

关于HTML的预解析

一般情况下,html文档解析时,遇到js脚本就会暂停,等待脚本的下载、执行,而下载的也比较依赖网络环境、脚本大小等。针对这个情况,Chrome 浏览器做了很多优化,其中一个主要的优化是预解析操作。当渲染引擎收到字节流之后,会开启一个预解析线程,用来分析 HTML 文件中包含的 JavaScript、CSS 等相关文件,解析到相关文件之后,预解析线程会提前下载这些文件。

原文

极客时间-浏览器工作原理与实践

相关文章

  • HTML文档是边加载边解析、预解析

    HTML文档加载边解析 之前一直以为html是加载完之后才由html解析器进行解析的,学习了浏览器原理之后,才知道...

  • Java POI 事件模式 读取指定行数

    java poi 事件模式采用SAX解析文档。sax一边扫描一边解析。和dom的一次加载到内存中不同。 所以sax...

  • ready与load

    DOM文档加载步骤 1)解析HTML结构;2)加载外部脚本和样式文件;3)解析并执行脚本代码;4)构造HTML D...

  • 异步加载 js 文件

    浏览器加载 js 的原理 浏览器一边下载 HTML 网页,一边解析 在解析的过程中,如果遇到 标签,就暂停解析,把...

  • DOMContentLoaded

    DOM文档加载流程:(1) 解析HTML结构。(2) 加载外部脚本和样式表文件。(3) 解析并执行脚本代码。(4)...

  • 2021-01-13 html基础知识

    浏览器解析过程 JavaScript 的加载、解析与执行会阻塞文档的解析,也就是说,在构建 DOM 时,HTML ...

  • JavaScript预解析

    简介js作为一门解释型脚本语言,特点是边解析边执行。而预解析则是,提前解析的意思,也就是所说的变量提升。在ES6之...

  • window.load 和$(document).ready()

    一、DOM文档加载的步骤为: 解析HTML结构。 加载外部脚本和样式表文件。 解析并执行脚本代码。 DOM树构建完...

  • DOMContentLoaded 和 load 事件

    DOMContentLoaded 当初始的 HTML 文档被完全加载和解析完成之后,DOMContentLoade...

  • load,DOMConetntLoaded

    DOMContentLoaded 1 .dom内容加载完毕,也就是html文档被加载和解析完成 2 . 3 .在解...

网友评论

      本文标题:HTML文档是边加载边解析、预解析

      本文链接:https://www.haomeiwen.com/subject/atyadrtx.html