从浏览器输入url到页面显示经历了哪些?
以前在写网页的时候从来没关注过一个页面是如何生成的。今天看到一篇文章就来详细的梳理一下这个流程
当我们在浏览器输入一个地址回车的时。
浏览器开始向服务器发送HTTP请求加载页面。
第一步:加载页面等待服务器的响应和浏览器的渲染。服务器响应的时HTML文件字节流浏览器的渲染引擎无法直接渲染。所以第一步要经过渲染引擎中的HTML解析器它实现了将HTML字节流以指定的编码格式转换(例如UTF-8)为各个字符。并将字符串转换为W3CHTML5标准规定的各种令牌(例如,"", “”)以及尖括号内的字符串。说白了HTML规定的令牌就是一种经过编码的字节流与HTML标签之间的一种对应关系。
第二步:在构建完DOM的时候HTML解析器会解析(meta link script标签请求css js图标文件我们把这个过程叫做预解析)
第三步:构建完DOM树以后。CSS解析器开始解析CSS数据并构建CSSOM树以及V8JS引擎解析javascript数据并执行javascript。
第四步:构建好的DOM树和CSSOM树会共同构成一个渲染树
注意:①CSS解析可以和DOM解析同时进行
②当前页面只有HTML和javascript的时候解析DOM的时候遇到JS会停下来去解析JS因为此时JS中可能有对已经生成的DOM树操作
③CSS渲染阻塞渲染的CSS因为如果不等CSS渲染完那么页面就没有样式这样的用户体验非常差