输入网址到显示网页浏览器都干了什么
2020-03-20 16:01:17来源:博客园 阅读 ()
输入网址到显示网页浏览器都干了什么
目录
- 输入地址到显示页面发生了什么
- 简单版
- 详细版
输入地址到显示页面发生了什么
简单版
- 浏览器发起DNS请求,解析域名得到
ip
地址 - 封装
HTTP
请求报文,并发送给服务器 - 服务器接收请求并处理请求,封装
HTTP
响应报发送会浏览器 - 浏览器解析响应报文, 遇到新资源继续请求
- 浏览器根据解析结果生成
DOM
树,CSSOM
树, 进行页面布局和渲染 - 最终显示完整页面
详细版
- 浏览器先查看缓存, 如果请求资源在缓存中且没过期,使用缓存
- 如果资源没有缓存,发起新请求
- 如果已缓存,检查是否过期
- 没有过期直接使用缓存
- 过期与服务器进行验证
- (资源未缓存)浏览器解析
URL
, 获取请求协议,主机,端口,路径信息 - 封装一个HTTP请求报文
- 获取
IP
地址- 查看浏览器有没有缓存这个IP地址
- 本机缓存中有没有
hosts
文件有没有DNS
查询
- 与目标
IP
服务器建立TCP
连接, 然后发送HTTP
请求报文 - 服务器接收请求并处理
- 服务器检查
HTTP
请求头是否包含缓存验证信息, 如果验证没有过期,返回304 - 组装
HTTP
响应报文, 并将发送回浏览器 - 浏览器接收HTTP响应,然后根据情况选择关闭
TCP
连接或保留重用 - 对响应报文体进行解码
- 浏览器检查响应状态码, 如果资源可以缓存,进行缓存
- 解析
HTML
结构,构建DOM
树,CSSOM
树 - 解析过程遇到新的资源继续发送请求,直到所有资源都加载完毕
- 根据
DOM
树和CSSOM
构建渲染树, 并对渲染树进行布局- 解析
HTML
构建DOM
树 - 根据
DOM
树,CSSOM
树构建渲染树- 不可见节点不会放入渲染树
- 不可见节点:
script
,meta
这样的节点本身不可见 - 被
CSS
隐藏的元素(display: none
,visibility:hidden
)
- 不可见节点:
- 不可见节点不会放入渲染树
- 对渲染树进行布局. 计算元素信息,确定大小,位置.
- 调用系统API进行绘图操作,显示页面
- 解析
- 解析,执行JS(一般将JS放在末尾,所以JS的执行在DOM渲染之后)
- 语法检查阶段
- 词法分析
- 语法分析
- 运行阶段
- 预解析
- 创建执行环境
- 确定 变量对象
- 确定 作用域
- 确定 this
- 属性填充(顺序)
- 函数参数(没有传入,初始化值为:undefined)
- 函数声明+定义(发生命名冲突会覆盖)
- 变量声明(初始化值为:undefined, 发生命名冲突会忽略)
- 创建执行环境
- 代码执行
- js引擎一行行读取代码并执行
- 预解析
- 语法检查阶段
- 显示页面
原文链接:https://www.cnblogs.com/luoshuifushen/p/12531107.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 网页搜索框里显示字段鼠标点击后就隐藏的方法 2020-05-29
- title 换行显示 2020-05-14
- 安装了https ssl证书,但浏览器显示并非完全安全(此页面内 2020-05-12
- 点击按钮下滑显示组件 2020-05-01
- CSS文本超出自动隐藏显示省略号 2020-04-27
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash