持久连接:
HTTP/1.1
默认支持持久连接,允许在一个TCP连接上发送多个HTTP请求和响应,减少了连接建立和关闭的开销。
而HTTP/1.0
默认为短连接,每次请求都需要建立一个TCP连接,可以通过Connection: keep-alive
头来实现持久连接。Connection: keep-alive
的作用是告诉服务器和客户端,它们之间的TCP连接应该保持活动状态,以便可以重用,而不是在发送完一个响应后立即关闭。这个特性在HTTP/1.0中引入,并且在HTTP/1.1中成为默认行为。
管道化:
HTTP/1.1
支持管道化(不是默认开启),允许客户端在第一个请求的响应到达之前发送多个请求,这可以减少等待时间,提高效率。
HTTP/1.0不支持管道化。
缓存控制:
HTTP1.0
主要使用If-Modified-Since/Expires
来做为缓存判断的标准
HTTP1.1
则引入了更多的缓存控制策略例如Etag / If-None-Match
等更多可供选择的缓存头来控制缓存策略。
错误处理:
HTTP/1.1
增加了一些新的HTTP状态码,如100 Continue
,用于增强错误处理和请求的中间响应。
客户端在收到100 Continue响应后,应该继续发送请求体。如果服务器在接收到包含Expect: 100-continue
的请求头后,决定不继续处理请求(例如,如果请求头信息表明请求无法被接受),服务器应该返回一个错误状态码(如400 Bad Request),而不是100 Continue。
Host
头:
HTTP/1.1
引入了Host
头,允许客户端指定请求的主机名,这使得在同一台服务器上托管多个域名成为可能。每个域名都可以映射到服务器上的不同资源或服务.HTTP/1.0没有这个头字段。
带宽优化 :
HTTP1.0
中,存在一些浪费带宽的现象,例如客户端只是需要某个对象的一部分,而服务器却将整个对象送过来了,并且不支持断点续传功能, 而HTTP1.1
则在请求头引入了range
头域,它允许只请求资源的某个部分,即返回码是206(Partial Content)