HTTP\1.1 是在 HTTP\1.0 的基础上做了一些改进
持久连接
在 HTTP\1.0 中,每进行一次 HTTP 通信,都需要经过: 建立 TCP 连接 --> 传输 HTTP 数据 --> 断开 TCP 连接 这三个阶段
刚开始的时候,通信的文件比较小,外部引用的文件也不多,所以这种传输形式没有什么问题
但是随着浏览器的普及,一个页面有可能包含很多很多的外部资源,如果每次下载资源都需要经过上述的三个步骤,无疑会额外增加服务器的负担,HTTP 的请求时长也会增加很多
HTTP\1.1 中的 持久连接 技术,就是为了解决这个问题
它的特点是在一个 TCP 连接上可以传输多个 HTTP 请求,只要浏览器或者服务器没有明确断开连接,那么 TCP 连接会一直保持
注意:持久连接在 HTTP\1.1 中是默认开启的,如果不想要持久连接,可以在请求头上加上 Connection: close
。目前浏览器对于同一个域名,默认允许同时建立 6 个 TCP 持久连接
HTTP 管线化
这是一个不成熟的技术
在 HTTP 请求中,需要等待前一次请求响应结果才能进行下一次请求,如果前一次请求由于某种原因没有返回响应,那么,就会阻塞后面的请求,这就是 队头阻塞 问题
而管线化是指,将多个 HTTP 请求整批提交给服务器,但是服务器依然需要根据请求顺序来回复浏览器的请求
提供虚拟主机的支持
在 HTTP\1.0 中,一个域名只能绑定一个 IP 地址,所以一个服务器只能支持一个域名,随着虚拟主机技术的发展,需要实现在一台无力主机上绑定多个虚拟主机,每个虚拟主机都有自己单独的域名,这些单独的域名都公用同一个 IP 地址
因此 HTTP\1.1 中增加了 Host 字段,用来表示当前的域名地址,这样服务器就可以根据不同的 Host 值做不同的处理
对动态生成的内容提供了完美的支持
HTTP\1.0 中,需要在响应头中设置完整的数据大小,如 Content-Length: 901
HTTP\1.1 中引入了 Chunk transfer 机制,服务器将数据分割成若干个任意大小的数据块,每个数据块发送时会附上上个数据块的长度,最后一个使用一个零长度的块作为发送数据完成的标志
客户端 Cookie, 安全机制
HTTP\1.1 引入了 Cookie 机制和安全机制
网友评论