HTTP1.1和HTTP1.0区别!
HTTP1.1和HTTP1.0区别!
月伴飞鱼支持长连接:
HTTP 1.0 规定浏览器与服务器只保持短暂的连接,浏览器的每次请求都需要与服务器建立一个TCP连接。
服务器完成请求处理后立即断开TCP连接,服务器不跟踪每个客户也不记录过去的请求。
HTTP 1.1 支持持久连接, 并且默认使用长连接,在同一个TPC的连接中可以传送多个HTTP请求和响应。
- 多个请求和响应可以重叠,多个请求和响应可以同时进行。
HTTP 1.1的持续连接,也需要增加新的请求头来帮助实现:
- Connection请求头的值为Keep-Alive时,客户端通知服务器返回本次请求结果后保持连接。
- Connection请求头的值为Close时,客户端通知服务器返回本次请求结果后关闭连接。
提供了Cache缓存机制:
当缓存对象的Age超过Expire时变为Stale对象,Cache不需要直接抛弃Stale对象,而是与源服务器进行重新激活。
请求的流水线(Pipelining)处理:
在一个TCP连接上可以传送多个HTTP请求和响应,减少了建立和关闭连接的消耗和延迟。
例如:一个包含有许多图像的网页文件的多个请求和应答可以在一个连接中传输。
但每个单独的网页文件的请求和应答仍然需要使用各自的连接,HTTP 1.1还允许客户端不用等待上一次请求结果返回。
就可以发出下一次请求,但服务器端必须按照接收到客户端请求的先后顺序依次回送响应结果。
- 以保证客户端能够区分出每次请求的响应内容。
增加Host字段:
在HTTP1.0中认为每台服务器都绑定一个唯一的IP地址,因此,请求消息中的URL并没有传递主机名。
在一台物理服务器上可以存在多个虚拟主机,并且它们共享一个IP地址。
HTTP1.1的请求消息和响应消息都应支持Host头域,且请求消息中如果没有Host头域会报告一个错误(400 Bad Request)。
100(Continue)Status:
客户端事先发送一个只带头域的请求,如果服务器因为权限拒绝了请求,就回送响应码401(Unauthorized)
如果服务器接收此请求就回送响应码100,客户端就可以继续发送带实体的完整请求了。
Chunked机制:
发送方将消息分割成若干个任意大小的数据块,每个数据块在发送时都会附上块的长度。
- 最后用一个零长度的块作为消息结束的标志。
这种方法允许发送方只缓冲消息的一个片段,避免缓冲整个消息带来的过载。