从输入网址到首屏加载完成流程

网页加载过程

输入资源地址(地址栏输入、页面跳转、页面加载)发起请求
==> 浏览器查找本地有无缓存可用( 搜索自身的 DNS 缓存 - 搜索操作系统自身的DNS 缓存 - 读取本地的 HOST 文件 )
==>浏览器向 DNS 服务器发起解析请求
==> 域名解析服务器查询IP地址(先查缓存,缓存没有向运营商迭代发送请求查询,查询到结果后缓存到本地再一层层返回结果)
==> 浏览器拿到IP地址后发起TCP请求 完成三次握手
==> 浏览器发送HTTP请求索要网页 创建端口
==> 服务端监听到请求后返回相应的状态和内容
==> 浏览器拿到返回内容后解析HTML为DOM树;渲染树结构;布局渲染树、绘制渲染树

浏览器拿到返回内容后解析网页详细流程

==>浏览器接收到HTML模板文件,开始从上到下、从左到右依次解析HTML;
==>如果遇到css文件,这时候浏览器停止解析HTML,接着去请求CSS文件;服务端返回CSS文件,浏览器开始解析CSS ,浏览器解析完CSS,会继续往下解析
==>如果浏览器发现img,向服务器发出请求。此时浏览器不会等到图片下载完,而是继续渲染后面的代码;
==>服务器返回图片文件,由于图片占用了一定面积,影响了页面排布,因此浏览器需要回过头来重新渲染这部分代码;
==>如果碰到脚本文件,这时停止所有加载和解析,去请求脚本文件,并执行脚本;
==>加载完所有的HTML、CSS、JS后,页面就出现在屏幕上了

注意:不同的浏览器对于CSS和HTML的处理方式不同,有的是等待CSS加载完成之后,对HTML元素进行渲染和展示(会出现白屏问题)。有的是先对HTML元素进行展示,然后等待CSS加载完成之后重新对样式进行修改(会出现FOUC无样式内容闪烁

猜你喜欢

转载自blog.csdn.net/qq_40969782/article/details/111917424
今日推荐