一、HTTP1.0和HTTP2.0的区别
-
http1.0:每次请求都需要重新建立tcp连接,请求完后立即断开与服务器连接,这很大程度造成了性能上的缺陷,http1.0被抱怨最多的就是连接无法复用。
-
http1.1:引入了长连接(keep-alive),相较于1.0减少了连接和关闭的延迟,提高了效率,但是若干个请求还是需要串行排队处理,如果一旦某个请求超时,后面的就会被阻塞,也就是常说的线头阻塞。
-
http2主要特点是
-
新的二进制格式传输:二进制即0和1的组合,实现方便健壮,而1.x版本是基于文本,解析存在缺陷
-
多路复用:一个连接可以有多个请求,且可以混杂在一起根据requestid来区分不同的请求,提高了连接的利用率,降低了延迟
-
header头部压缩:通讯两方各自缓存了一份 header请求头表,避免了重复的header传输,且缩小了包的体积大小
-
服务端推送功能:可以服务端主动向客户端push消息
-
二、webSocket和Socket之间的区别联系
1. webSocket和Socket的概念介绍
-
socket翻译为套接字,socket是在应用层和传输层之间的一个抽象层,它把TCP/IP层复杂的操作抽象为几个简单的接口供应用层调用以实现进程在网络中通信。
-
WebSocket协议是基于TCP的一种新的网络协议,和http协议一样属于应用层协议,是一种让客户端和服务器之间能进行双向实时通信的技术。
2. webSocket和Socket的区别
1、原理上的区别:
- Socket是传输控制层协议,WebSocket是应用层协议。
-
Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口(不是协议,为了方便使用TCP或UDP而抽象出来的一层,是位于应用层和传输控制层之间的一组接口)。
-
在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面。利用TCP/IP协议建立TCP连接。(TCP连接则更依靠于底层的IP协议,IP协议的连接则依赖于链路层等更低层次。)
- WebSocket则是一个典型的应用层协议。
2、灵活运用的程度不同:
- WebSocket 更易用,而 Socket 更灵活。Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。
3、传输层次不同:
- Socket 是传输控制层的接口。用户可以通过 Socket 来操作底层 TCP/IP 协议族通信。
- WebSocket 是一种在单个 TCP 连接上进行全双工通信的协议。WebSocket 使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。
三、Cors解决跨域问题
跨域问题
- 当一个请求url的协议、域名、端口三者之间任意一个与当前页面url不同即为跨域
解决方案
-
Jsonp
最早的解决方案,利用script标签可以跨域的原理实现。
限制:
需要服务的支持
只能发起GET请求 -
nginx反向代理
思路是:利用nginx反向代理把跨域改为不跨域,支持各种请求方式
缺点:需要在nginx进行额外配置,语义不清晰
-
CORS
规范化的跨域请求解决方案,安全可靠。优势:
- 在服务端进行控制是否允许跨域,可自定义规则
- 支持各种请求方式
缺点:
- 会产生额外的请求
Access-Control-Allow-Origin:可接受的域,是一个具体域名或者*,代表任意
Access-Control-Allow-Credentials:是否允许携带cookie,默认情况下,cors不会携带cookie,除非这个值是true
点击查看详细解决方案 链接
四、url最大长度问题
五、设计模式
点击查看详细链接
六、js闭包的理解
点击跳转至闭包链接
对内存泄漏的理解
点击跳转至内存泄漏
七、js创建对象的几种方式
点击跳转至js创建对象详情链接
八、js变量提升详解
点击跳转至js变量提升详情链接
九、vue2和vue3的区别
点击跳转至vue2和vue3详情链接