关于浏览器

浏览器多进程到JS单线程(JS运行机制)

1.进程和线程

进程是cpu资源分配的最小单位(是能拥有资源和独立运行的最小单位)
线程是cpu调度的最小单位(线程是建立在进程的基础上的一次程序运行单位,一个进程中可以有多个线程)

2.浏览器进程(多进程)

Browser进程(管理资源),第三方插件进程,GPU进程(3D绘制),浏览器渲染进程

3.浏览器内核(渲染进程)

1.GUI渲染线程(构建DOM树和Render树,布局绘制回流重回等)

2.JS引擎线程(处理js脚本)

3.事件触发线程(用来控制事件循环)

4.定时触发器线程(定时器所在的线程)

5.异步HTTP请求线程(XMLHttpRequest对象请求的线程)

GUI渲染线程与JS引擎线程互斥,JS阻塞页面加载

4.EventLoop

宏任务:script,setTimeout,setInterval,Dom事件

微任务:promise.then()

同步任务会在调用栈中按照顺序等待主线程依次执行,异步任务会在异步任务有了结果后,将注册的回调函数放入任务队列中等待主线程空闲的时候(调用栈被清空),被读取到栈内等待主线程的执行。

过程:执行栈在执行完同步任务后,就会去执行微任务,然后检查微任务队列是否为空,如果为空就会去执行宏任务

Cookie,session,token的区别

1.cookie和session

存储:cookie存储在客户端,session存储在服务端
类型:cookie只能存字符串数据,session可以存任意数据类型
有效期:cookie可以设置为长时间保存,session客户端关闭或超时会失效
存储大小:cookie保存数据不超过4K,session存储理论无线,但是耗费性能

2.session和token

状态:session可以记录会话信息,是服务端有状态化,token是令牌不会存储会话信息
安全性:身份认证token安全性比session好

输入一个url发生了什么

1.DNS查址

浏览器会从浏览器自身缓存中查找是否有目标域名和对应的IP地址
从本地电脑的hosts文件查找是否有存储DNS信息
从路由器的缓存DNS信息中查找
ISP DNS缓存查找,从网络服务商(比如电信)的DNS缓存信息中查找

2.TCP三次握手

第一次握手:客户端发送syn包(j),等待服务器确认
第二次握手:服务端收到syn包,确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包
第三次握手:客户端收到SYN包和ACK包,向服务器发送确认ACK包(ack=k+1)完成链接

3.HTTP缓存

判断服务器响应头中的Expirescache-control(数据到期时间,Cache-Control优先级更高),如果资源没有过期就会读取缓存,如果资源过期,没有命中强缓存,就会去进行协商缓存,对比EatgIf-none-Match(服务器资源唯一标识),如果不符合,就对Last-ModifiedIf-Modified-Since(资源最后修改时间)进行对比,若最后修改时间较旧,说明资源无新修改,响应HTTP 304 走缓存

4.客户端发送请求
5.服务端返回资源
6.解析文件,渲染界面

解析HTML,CSS生成reander树进行页面渲染(JS代码会进行阻塞)

js会修改css样式表,操作dom,会对渲染产生阻塞
define:JS脚本先不执行,延迟到文档解析和显示后执行,有顺序
async:异步加载脚本,无法保证加载执行顺序

网络安全问题

1.XSS攻击

XSS攻击是页面被注入恶意代码

在url,评论框中注入脚本(JS代码块)

image-202110070954469831.编码转义
2.过滤相关属性
3.HTTPOnly

2.CSRF攻击

image-20211007101637096
1.加入验证码
2.使用referer验证
3.Token

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值