从一个url地址最终到页面渲染完成,发生了什么

作为前端面试题之以,从一个url地址最终到页面渲染完成,共发生了以下六个步骤:

1.DNS解析:将域名地址解析为ip地址

  先从浏览器DNS缓存中查找,如果没找到

  再从系统DNS缓存中查找,如果也没有找到

  然后再从路由器DNS缓存中查找,如果还是没有找到

  接着从网络运营商DNS缓存中查找,如果也还是没有找到

  就递归搜索,举个栗子:你要搜索:blog.baidu.com

    先从.com域名下查找DNS解析,如果没找到

    再从.baidu域名下查找DNS解析,如果还是没有找到

    就从blog域名下查找,如果还是没有找到

  页面会提示出现错误

2.建立TCP连接,也就是TCP三次握手

第一次握手,由浏览器发起,告诉服务器我要发送请求了,你在不在?

第二次握手,由服务器发起,告诉浏览器我在,我准备接受了,你赶紧发送吧

第三次握手,由浏览器发送,告诉服务器,我马上就发了,准备接受吧

3.发送请求

  请求报文:HTTP协议的通信内容

4.接收响应

  响应报文

5.渲染页面

  当遇见HTML标记时浏览器调用HTML解析器解析成Token并构建dom树

  当遇见style/link标记,浏览器调用css解析器,处理css标记并构建cssom树

  当遇见script标记时,调用JavaScript解析器,处理script代码(绑定事件,修改dom树/cssom树)

  将dom树和cssom树合并成一个渲染树

  根据渲染树来计算布局,计算每个节点的几何信息(布局)

  将各个节点颜色绘制到屏幕上(渲染)

注意:这五个步骤不一定按照顺序执行,如果dom树或cssom树被修改了,可能会执行多次布局和渲染

    往往实际页面中,这些步骤都会执行多次的

6.断开连接,TCP的四次挥手

  第一次挥手,由浏览器发起的,发送给服务器,我东西发送完了(请求报文),你准备关闭吧

  第二次挥手,由服务器发起的,告诉浏览器,我东西接接受完了(请求报文),你也准备把

  第三次挥手,由服务器发起,告诉浏览器,我东西发送完了(响应报文),你准备关闭吧

  第四次挥手,由浏览器发起,告诉服务器,我东西接受完了(响应报文),我准备关闭了,你也准备把

 

    

posted @ 2020-04-29 09:36  天空003  阅读(236)  评论(0编辑  收藏  举报