浏览器阻塞:对于同一个域名,浏览器客户端发送给服务端的连接数是有限制的,当连接数超过浏览器最大连接数的限制时,后续的请求就会发生阻塞;
DNS查询:在浏览器中访问一个网址或发送一个请求时,浏览器首先需要得到域名对应的IP,即服务器的IP地址,这就需要通过DNS来解析域名。若此前获取过该域名的IP,可将结果缓存起来,下次从缓存(浏览器缓存、系统缓存、路由器缓存)中查询IP可节省一些时间;
建立连接:http 是基于TCP协议的,每次请求数据,都需要与服务器建立TCP连接,至少要经过三次握手,浏览器才能向服务器传输报文数据;TCP连接还有一个特点——慢启动,即 TCP 会进行自我“调谐”,最开始会限制数据传输速度,待数据传输成功后,会慢慢提高传输的速度。
多路复用:指浏览器可同时向服务器发送多个http请求,服务器也可同时处理多个请求,将结果返回给浏览器;若需规定某些请求的优先级,则可以给这些请求携带上唯一标识,打上标签,服务器即可通过这些标签识别
头部压缩:http 请求和响应都是由 状态行、请求/响应头部、消息主体 三部分构成,消息主体通常会经过压缩后再传输,但请求/响应头部和状态行都没有经过压缩,随着web网页越来越复杂,头部的内容也越来越多,所以 http 2.0 使用encoder来减少需要传输的header内容大小,以此节省资源
头部压缩的原理:
浏览器和服务器需要维护一份相同的静态字典和动态字典(类似键值对),以此支持header中的常见内容通过“键”的方式传输,大大减少传输数据量。
文本格式=>二进制格式:http 1.x都是采用文本格式,但是基于文本协议的格式解析起来有一些困难,因为文本的组合形式太多;http 2.0 采用二进制格式,二进制只有 0和1 的组合形式,解析更加容易
服务端推送:指在客户端请求之前就向客户端发送数据的机制。例如,当浏览器向服务端请求一个index.html页面时,这个页面还需要一些js和css文件,在http1.0中就需要html文件返回成功后,浏览器再次向服务器请求这些资源,这就会导致网络空闲、网络利用率低。为了解决这个问题,在http2.0中,增加了服务端推送这个功能,即在浏览器请求一个html页面时,服务器就开始推送它需要的一些静态资源,充分利用了空闲的网络,从而加快页面加载时间
https就是安全版的http,在http层和tcp层之间添加了 ssl 层,实现数据加密,增加网络连接的安全性。
多路复用 可允许多个请求同时在一个连接上并行执行,其中一个请求任务耗时严重,不会影响其他请求的正常执行;长连接 是多个请求排队等待处理,后面的请求需等待前面请求返回后才能被执行,若某请求超时,后面的请求就会被阻塞。
可简单理解为,一个(多路复用)并行执行多个请求,一个(长连接)串行执行多个请求。
http 2.0、http 1.1、http 1.0 的区别
原文:https://www.cnblogs.com/upward-lalala/p/15094825.html