1. 各个版本HTTP的不同
HTTP 0.9
最初的版本只支持get,玩具级别
HTTP 1.0
支持多种类型的文件下载HTTP/1.0引入了请求头和响应头。引入了状态码、提供了Cache机制来缓存下载过的资源、加入了用户代理字段。
HTTP 1.1
广泛使用的版本,支持了pipeline。支持TCP连接复用,之前的HTTP每次传输完一次消息后就会断开TCP连接。1.1 支持了keep-alive字段实现TCP连接复用。1.1还支持了cookie,虚拟主机(即一个服务器绑定多个域名)。但是HTTP 1.1存在线头阻塞的问题,即上一个请求没有相应前无法进行下一步操作。
HTTP 2
HTTP2最大的特性是支持了多路复用。引入了二进制分帧和stream id能够让多个请求和响应的传输完全混杂在一起进行。
* 可以设置请求的优先级:服务器不需要按顺序处理请求,因此对于一些优先级比较高的请求,如关键资源的加载,可以在发送请求时标注优先级,服务器接收到请求后,会优先处理优先级高的请求。* 服务器推送:服务器可以将数据提前推送到浏览器,例如:用户请求首页HTML文件后,服务器知道该页面会引用几个重要的JavaScript文件和CSS文件,于是可以附带将这些文件一并发送给浏览器,加快渲染速度。* 头部压缩:HTTP/2对请求头和响应头进行了压缩,在一些大量发送请求体比较少的请求的情况下,传输效率会得到很大的提升。
如何理解HTTP是一个无状态无连接的协议?
无状态:在server端看来每一次的HTTP请求是独立的,上一次的请求不会对当前请求产生任何影响。这种做法的优点在于解放了服务器,每一次请求“点到为止”不会造成不必要连接占用,缺点在于每次请求会传输大量重复的内容信息。无连接是指请求处理结束后就会关闭连接。
参考资料: