1. HTTP1.1的新特性介绍
1.1 长连接支持
http1.1之前没个请求都会建立一个http链接,对于一个页面来说,浏览器可能需要发送多个请求,而且http链接的建立和关闭是开销很大的操作。通过使用长连接,客户端可以通过一个连接请求一个页面的所有资源。http1.1支持而且默认使用长连接。浏览器也可以通过发送下面的请求头信息显示指定使用长连接:
connection: keep-alive
1.2 块编码
在服务端和客户端使用长连接进行通信的时候,发送端必须要通过一种方式告诉客户端发送了多少字节,http1.0中服务端可以通过content-length来告诉客户端发送了多少字节,但是这是可选的,因为浏览器的内容发送完了之后就会关闭连接,客户端只需要读完所有内容就可以了。但是如果使用长连接,这样明显是不行的,因为发送端并不知道自己一共要发送多少字节。所以http1.1通过一个transfer-encoding的请求头来指明字节流将会分开发送。每一个块分为块的长度和块的内容两个部分,由CRLF分隔。如:
1D\r\n I'm as helpless as a kitten u 9\r\n p a tree. 0\r\n
1.3 状态码100的使用
使用http1.1的客服端可以在向服务端发送请求之前发送请求头:
Expect: 100-continue
如果服务端可以接受处理请求,可以发送响应头:
HTTP/1.1 100 Continue \r\n
避免服务端不能处理请求而客户端有发送大量数据的浪费。
2 Connector