#### 浏览器获取资源过程
1. 先去查找缓存,检测缓存是否过期,直接返回缓存的内容
2. 看域名是否被解析过,DNS协议,将域名解析成ip地址(DNS基于UDP协议)
3. 如果请求时https,那么会做一个ssl协商,保证请求的安全性
4. 通过ip地址来进行寻址,排队等待,最多能发送6个http请求
5. 创建tcp连接,三次握手
6. 利用tcp传输数据,拆分为数据包,有序,可靠,服务器会按顺序来接收
7. 发送http请求(请求行,请求头,请求体)
8. tcp连接默认不会断开,因为有个字段叫keep-alive,为了下次传输数据时,可以复用上次创建的连接
9. 服务器收到数据后,发送响应数据,响应行,响应头,响应体
10. 服务器状态码:301,302会进行重定向,如果重定向了就会重新发另一个请求
11. 服务器状态码304,去查询浏览器缓存进行返回
#### 浏览器解析资源过程
1.将html转化为DOM树
2.将css解析成cssom样式表
```
css link标签放在最下面可能会导致css的重绘
构件dom树的时候不会被css解析阻塞,但是渲染render tree的过程会被css阻塞
js阻塞html解析,也会阻塞html渲染,js要等上面的css加载完毕,保证js可以操作样式
```
3.计算出DOM树种每个节点的具体样式(Attachment)
4.创建render tree,将dom树中的可见节点,添加到布局树种,并计算节点渲染到页面的坐标位置layout
5.通过布局树,进行分层
### 备用知识
#### 1.网络七层模型
物联网淑慧试用
应用层
+ 应用层
+ 表示层
+ 会话层
传输层 (TCP, UDP)
网络层
数据链路层
物理层
#### 2.http历史
http0.9:负责传输的html,最早的时候没有请求头和响应头
http1.0:提供了http的header,根据了header的不同,来处理不同的资源
http1.1:默认开启了keep-alive,tcp的长连接,链接复用,管线化(同时可以建立6个链接)
服务器处理多个请求(对头阻塞问题)
http2:
+ 用同一个tcp链接来发送数据,一个域名一个tcp(多路复用),多个请求用一个tcp链接
+ 头部压缩
+ 服务器可以推送数据给客户端
http3:解决了tcp的队头阻塞问题,采用了udp,并在udp上一层加了一层quic协议
- JavaScript
- 1. DOM事件流
- 2. 模拟 new, Object create(), bind
- 5. 封装函数进行字符串驼峰命名的转换
- 6. 什么是promise
- 7. 判断一个数是否为数组
- 10. __proto__和prototype以及原型,原型链,构造函数
- 11. 继承
- 12. 闭包
- 13. 回调函数
- 14. var 和 let 区别
- 15. this、bind、call、apply
- 16.undefined和null的区别
- 17.内存泄漏
- 18.垃圾回收机制
- html css
- 1. 元素垂直水平居中
- 2. 清除浮动
- 3. bootstrap栅格系统
- 4. px rpx em rem vw 的区别
- 5. 两种盒子模型
- 6. 合集
- web类
- 1. html5的新特性以及理解(web标签语义化)
- 2. 什么是路由,关于前端路由和后端路由
- 3. 对优质代码的理解
- 4. cookie 和 sessionStorage和localStorage
- 5. 浏览器内核
- 6. http 状态码
- 7. href 和 src 的区别
- 8. link 和 @import 的区别
- 9. http 状态码
- 10. websocket
- 11. 浏览器解析url
- 12.http缓存
- vue
- 1.vue2和vue3有哪些区别
- 1. 对 mvvvm 的理解
- 2. mvvm的优缺点
- 3. 数据双向绑定的原理
- 4. 生命周期
- 5. 组件如何通信
- 6. computed和watch的区别
- 7. proxy 和 Object.defineProperty
- 8. 虚拟dom和 diff算法
- 9. 路由的嵌套与传参
- 10. 路由导航钩子
- 11. axios 的理解
- 12. vue自定义指令 diretive
- 13. diff 的实现
- 14. 实现一个简单的双向绑定
- 15. 为什么 data 是一个函数
- 题谱
- js
- 手写篇
- css
- vue
- react
- 算法
- 自我介绍
- 八股文
- 源项目地址
- 1.计算机网络
- 2.浏览器
- 3.html和css
- 4.javascript
- 6.typescript
- 7.vue
- 8.react
- 大厂面试
- 面试题大全
- 常见性能优化
- 面试实战
- 面试分析
- 押题
- 1.微前端在项目中的实际应用
- 2.性能优化
- vue相关
- 1.说一说HashRouter和HistoryRouter的区别和原理
- 无敌之路,牛客网面试题自测记录
- 前端基础
- 1.html
- 2.js基础
- 珠峰性能优化
- WebWorker
- url到渲染
- 浏览器加载机制
- 自我介绍1
- 手写题
- 1.compose
- 2.setTimeout模拟setInterval
- 3.手写数组拍平
- 4.手写promise.all
- 5.手写深拷贝
- webpack
- 实战