http1.0和http1.1的区别
http1.0和http1.1的区别
1.可扩展性
HTTP / 1.1的设定与HTTP实现的安装基础的兼容性是强制性的。大多数软件供应商或网站运营商似乎不太可能部署不能与数百万现有客户端,服务器和代理进行互操作的系统。
HTTP / 1.1引入了该OPTIONS 方法,一种客户端在不实际请求资源的情况下了解服务器的功能的方法。
2.高速缓存
HTTP /
1.0提供了一个简单的缓存机制。原始服务器可以使用Expires 标题来标记响应,其中缓存可以返回响应而不违反语义透明度的时间。此外,高速缓存可以使用所谓的条件请求来检查响应的当前有效性:其可以包括If-Modified-Since 对资源的请求中的头部,指定缓存的响应Last-Modified头部中给出的值。然后,服务器可以使用304(未修改)状态代码进行响应,这意味着高速缓存条目有效,或者它可以发送正常的200(OK)响应来替换高速缓存条目。
HTTP / 1.1尝试澄清缓存背后的概念,并为缓存提供明确和可扩展的协议机制。虽然它保留了基本的HTTP /
1.0设计,但它增强了设计的新特性,并且更加细致地规定了现有的功能。HTTP /
1.1还添加了新的条件标题,If-Unmodified-Since并If-Match为请求创建了其他形式的前提条件。这些先决条件在更复杂的情况下是有用的。
3.带宽优化
HTTP / 1.1地址的方式浪费带宽。一个典型的例子是服务器发送一个完整的(大)资源,当客户只需要一小部分的时候。HTTP /
1.0中没有办法请求部分对象。在范围响应中,Content-Range 标题表示返回范围的偏移量和长度,新的multipart/byterangesMIME类型允许在一个消息中传输多个范围。HTTP
/
1.1包括一个新的状态码100(继续),通知客户请求主体应该被发送。当使用此机制时,客户端首先发送其请求头,然后等待响应。如果响应是错误代码(如401(未经授权)),表示服务器不需要读取请求主体,则该请求将被终止。
节省带宽的一个众所周知的方法是通过使用数据压缩。HTTP /
1.1对内容编码进行区分,内容编码是资源的本机格式固有的端到端编码以及总是逐跳的传输编码。压缩可以作为内容编码或转移编码来完成。为了支持这种选择,以及各种现有和未来的压缩编码之间的选择,HTTP
/ 1.1不会破坏与安装基础的兼容性,必须仔细修改和扩展协商使用编码的机制。
4.网络连接管理
HTTP几乎总是使用TCP作为其传输协议。TCP最适合长期连接,但是原始的HTTP设计为每个请求使用了一个新的TCP连接,因此每个请求都会产生设置新的TCP连接的成本。由于大多数Web交互都很短,TCP连接很少经过“慢启动”,因此无法最大限度地利用可用带宽。为了解决这些问题,使用持久连接。
HTTP / 1.0以其记录的形式,没有提供持久连接。然而,一些HTTP /
1.0实现使用Keep-Alive 头请求连接持续。这种设计没有与中间代理进行互操作; HTTP / 1.1指定了一个更通用的解决方案。HTTP
/ 1.1使持久连接成为默认连接。
5.留言传输
HTTP消息可以携带任意长度的主体。消息的接收者需要知道消息在哪里结束。发件人可以使用Content-Length 标题,这给出了身体的长度。没有缓冲整个响应(这会增加延迟),服务器不知道它将要多长时间,不能发送Content-Length 头。分块传输编码。
6.互联网地址保护
HTTP / 1.0客户端不会发送Host头文件,HTTP / 1.1服务器不能简单地拒绝没有它们的所有消息。但是,HTTP /
1.1规范要求HTTP / 1.1服务器必须拒绝任何不包含Host报头的HTTP /
1.1消息。Host 标头机制的意图,特别是强制其在HTTP /
1.1请求中的存在的要求是加快转移,为每个URL分配新的IP地址。然而,只要互联网上大部分用户使用不发送的浏览器Host,依赖这些用户的网站运营商,就不会放弃虚拟网址IP地址。
7.错误通知
HTTP / 1.0定义了一组相对较小的16个状态码,包括正常的200(OK)码。HTTP / 1.1中有24个新的状态码;。
8.安全性,完整性和身份验证
提高了对隐私和安全问题的敏感性。进行访问认证,代理验证,内容MD5值校验等
9.内容协商
HTTP / 1.1规范保留了用于代理驱动协商,当客户端请求变化的资源时,服务器将回复300(多选择)响应,其中包含可用表示的列表和每个表示的属性(如其语言和字符集)的描述。客户端(代理)然后自动或与用户干预选择一个表示,并重新提交请求,指定所选的变体。