一、HTTP 1.1支持长链接(PersistentConnection)和请求的流水线(Pipelining)处理浏览器
HTTP 1.0规定浏览器与服务器只保持短暂的链接,浏览器的每次请求都须要与服务器创建一个TCP链接,服务器完成请求处理后当即断开TCP链接,服务器不跟踪每一个客户也不记录过去的请求。缓存
HTTP 1.1则支持持久链接Persistent Connection, 而且默认使用persistent connection. 在同一个tcp的链接中能够传送多个HTTP请求和响应. 多个请求和响应能够重叠,多个请求和响应能够同时进行. 更加多的请求头和响应头(好比HTTP1.0没有host的字段).服务器
在1.0时的会话方式:
1. 创建链接
2. 发出请求信息
3. 回送响应信息
4. 关掉链接tcp
HTTP 1.1的持续链接,也须要增长新的请求头来帮助实现,例如,Connection请求头的值为Keep-Alive时,客户端通知服务器返回本次请求结果后保持链接;Connection请求头的值为close时,客户端通知服务器返回本次请求结果后关闭链接。HTTP 1.1还提供了与身份认证、状态管理和Cache缓存等机制相关的请求头和响应头。post
请求的流水线(Pipelining)处理,在一个TCP链接上能够传送多个HTTP请求和响应,减小了创建和关闭链接的消耗和延迟。例如:一个包含有许多图像的网页文件的多个请求和应答能够在一个链接中传输,但每一个单独的网页文件的请求和应答仍然须要使用各自的链接。 HTTP 1.1还容许客户端不用等待上一次请求结果返回,就能够发出下一次请求,但服务器端必须按照接收到客户端请求的前后顺序依次回送响应结果,以保证客户端可以区分出每次请求的响应内容。server
2.HTTP 1.1增长host字段对象
在HTTP1.0中认为每台服务器都绑定一个惟一的IP地址,所以,请求消息中的URL并无传递主机名(hostname)。但随着虚拟主机技术的发展,在一台物理服务器上能够存在多个虚拟主机(Multi-homed Web Servers),而且它们共享一个IP地址。blog
HTTP1.1的请求消息和响应消息都应支持Host头域,且请求消息中若是没有Host头域会报告一个错误(400 Bad Request)。此外,服务器应该接受以绝对路径标记的资源请求。ip
三、100(Continue) Status(节约带宽)资源
HTTP/1.1加入了一个新的状态码100(Continue)。客户端事先发送一个只带头域的请求,若是服务器由于权限拒绝了请求,就回送响应码401(Unauthorized);若是服务器接收此请求就回送响应码100,客户端就能够继续发送带实体的完整请求了。100 (Continue) 状态代码的使用,容许客户端在发request消息body以前先用request header试探一下server,看server要不要接收request body,再决定要不要发request body。
4、HTTP/1.1中引入了Chunked transfer-coding来解决上面这个问题,发送方将消息分割成若干个任意大小的数据块,每一个数据块在发送时都会附上块的长度,最后用一个零长度的块做为消息结束的标志。这种方法容许发送方只缓冲消息的一个片断,避免缓冲整个消息带来的过载。
5、HTTP/1.1在1.0的基础上加入了一些cache的新特性,当缓存对象的Age超过Expire时变为stale对象,cache不须要直接抛弃stale对象,而是与源服务器进行从新激活(revalidation)。