HTTP1.0和HTTP1.1和HTTP2.0的区别

HTTP1.0和HTTP1.1和HTTP2.0的区别

1 HTTP1.0和HTTP1.1的区别

1.1 长连接(Persistent Connection)

HTTP1.1支持长连接和请求的流水线处理,在一个TCP连接上可以传送多个HTTP请求和响应,减少了TCP的建立和关闭连接的消耗和延迟,在HTTP1.1中默认开启长连接keep-alive,一定程度上弥补了HTTP1.0每次请求都要创建TCP连接的缺点。HTTP1.0需要使用keep-alive参数来告知服务器端要建立一个长连接。

1.2 节约带宽

HTTP1.0中存在一些浪费带宽的现象,例如客户端只是需要某个对象的一部分,而服务器却将整个对象送过来了,并且不支持断点续传功能。HTTP1.1支持只发送header信息(不带任何body信息),如果服务器认为客户端有权限请求服务器,则返回100,客户端接收到100才开始把请求body发送到服务器;如果返回401,客户端就可以不用发送请求body了节约了带宽。

1.3 HOST域

在HTTP1.0中认为每台服务器都绑定一个唯一的IP地址,因此,请求消息中的URL并没有传递主机名(hostname),HTTP1.0没有host域。随着虚拟主机技术的发展,在一台物理服务器上可以存在多个虚拟主机(Multi-homed Web Servers),并且它们共享一个IP地址。HTTP1.1的请求消息和响应消息都支持host域,且请求消息中如果没有host域会报告一个错误(400 Bad Request)。

1.4缓存处理

在HTTP1.0中主要使用header里的If-Modified-Since,Expires来做为缓存判断的标准,HTTP1.1则引入了更多的缓存控制策略例如Entity tag,If-Unmodified-Since, If-Match, If-None-Match等更多可供选择的缓存头来控制缓存策略。

1.5错误通知的管理

在HTTP1.1中新增了24个错误状态响应码,如409(Conflict)表示请求的资源与资源的当前状态发生冲突;410(Gone)表示服务器上的某个资源被永久性的删除。

2 HTTP1.1和HTTP2.0的区别

2.1 多路复用

HTTP2.0使用了多路复用的技术,做到同一个TCP连接并发处理多个请求,而且并发请求的数量比HTTP1.1大了好几个数量级。HTTP1.1也可以多建立几个TCP连接,来支持处理更多并发的请求,但是创建TCP连接本身也是有开销的。
在这里插入图片描述

2.2 头部数据压缩

在HTTP1.1中,HTTP请求和响应都是由状态行、请求/响应头部、消息主体三部分组成。一般而言,消息主体都会经过gzip压缩,或者本身传输的就是压缩过后的二进制文件,但状态行和头部却没有经过任何压缩,直接以纯文本传输。随着Web功能越来越复杂,每个页面产生的请求数也越来越多,导致消耗在头部的流量越来越多,尤其是每次都要传输UserAgent、Cookie这类不会频繁变动的内容,完全是一种浪费。

HTTP1.1不支持header数据的压缩,HTTP2.0使用HPACK算法对header的数据进行压缩,这样数据体积小了,在网络上传输就会更快。

2.3 服务器推送

服务端推送是一种在客户端请求之前发送数据的机制。网页使用了许多资源:HTML、样式表、脚本、图片等等。在HTTP1.1中这些资源每一个都必须明确地请求。这是一个很慢的过程。浏览器从获取HTML开始,然后在它解析和评估页面的时候,增量地获取更多的资源。因为服务器必须等待浏览器做每一个请求,网络经常是空闲的和未充分使用的。

为了改善延迟,HTTP2.0引入了server push,它允许服务端推送资源给浏览器,在浏览器明确地请求之前,免得客户端再次创建连接发送请求到服务器端获取。这样客户端可以直接从本地加载这些资源,不用再通过网络。
在这里插入图片描述
参考:https://juejin.im/entry/5981c5df518825359a2b9476

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/406692.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PowerShell实战1:Ping_Test

功能:批量测试远程主机的Ping值,以及根据TTL值来判断是否为Windows主机。使用:在C:\IP.txt中加入需要测试的主机IP或域名,一行一个。例如: www.google.com www.baidu.com www.cha123.com www.yahoo.com www.msn.com源码…

5年后你最想要什么?

当你对自己的生命经常问为什么会这样的时候,你不妨试着问一下自己,你是否很清楚地知道自己要的是什么?如果连你自己要的是什么都不知道的话,那么爱你的亲人如何帮你安排呢?又岂能无端地怪亲人没有给你开路呢&#xff1…

TCP建立连接与断开连接的过程

在CS模式的TCP连接建立过程中,客户端与服务器端流程如下: 客户端流程:发送请求->接收服务器端确认->发送对服务器端确认的确认。 服务器端流程:接收客户端的连接建立请求->发送确认->接收客户端发送的对确认的确认。…

Session莫名丢失的原因及解决办法[转载]

Asp.net 默认配置下,Session莫名丢失的原因及解决办法 正常操作情况下Session会无故丢失。因为程序是在不停的被操作,排除Session超时的可能。另外,Session超时时间被设定成60分钟,不会这么快就超时的。 这次到CSDN上搜了一下帖子…

Python的构造函数和析构函数,对象和类的不一样

1.Python像其他的OOP语言一样在类里面会有构造和析构函数... 类似于PHP的, 构造和析构函数并不需要显式的写出来...他们只是在这个对象生成和销毁的时候才会被调用.. 如果显式的定义了,那么在对象被生成和销毁时就会分别的调用这两个函数 构造函数: __init__ 这个函数在用代码生…

Android控件捕获点击事件的范围

View的Tween动画过程中点击事件的位置并不会因为动画位置的改变而改变,是因为在动画过程中layout的位置实际上没有变,因此曾经一度认为View的点击事件(其实不仅仅是点击事件,包括所有的触摸事件)触发的范围是该View在l…

利用闭包实现onclick事件传递参数

当触发点击事件&#xff0c;一个简单的例子。 <!DOCTYPE html> <html> <head><title>闭包创建数组</title><meta charset"utf-8"><script type"text/javascript">window.onload function (){var lis documen…

ms sql 触发器( 转)

create trigger TgNameon tbfor updateas if update(recommend)begin update tb set commenddate(getdate()) from tb inner join inserted on tb.vlistidInserted.vlistidend关键在于Inserted表触发器语句中使用了两种特殊的表&#xff1a;deleted 表和 inserted 表。Dele…

Sicily 1034. Forest

题目地址&#xff1a;1034. Forest 思路&#xff1a; 网上很多说用深搜&#xff0c;很任性.......发现广搜也挺好用的&#xff0c;实验课打的(⊙o⊙)…orz........囧。 先找根结点&#xff0c;根据根结点广搜深度&#xff0c;广搜宽度&#xff0c;不过要开一个数组&#xff0c;…

Python中文全攻略

From: http://www.sqlite.com.cn/MySqlite/11/395.Html 1. 在Python中使用中文 在Python中有两种默认的字符串&#xff1a;str和unicode。在Python中一定要注意区分“Unicode字符串”和“unicode对象”的区别。后面所有的“unicode字符串”指的都是python里的“unicode…

HTTP 304状态码的详细讲解

HTTP 304状态码的详细讲解 304状态码或许不应该认为是一种错误&#xff0c;而是对客户端有缓存情况下服务端的一种响应。 整个请求响应过程如下&#xff1a; 客户端在请求一个文件的时候&#xff0c;发现自己缓存的文件有 Last Modified &#xff0c;那么在请求中会包含 If …

[MySQL FAQ]系列 -- 数据不算大,备份却非常慢

作/译者&#xff1a;叶金荣&#xff08;Email: &#xff09;&#xff0c;来源&#xff1a;http://imysql.cn&#xff0c;转载请注明作/译者和出处&#xff0c;并且不能用于商业用途&#xff0c;违者必究。问题环境硬件&#xff1a;DELL 1950, 146G SAS 15K RPMS * 2, 8G Ram软件…

视频编解码:第一章 编解码基础

1. 视频编码概念 视频编码方式就是指通过特定的压缩技术&#xff0c;将某个视频格式的文件转换成另一种视频格式文件的方式。 2. 为什么要进行视频压缩&#xff1f; 数据太大&#xff1a;未经压缩的数字视频数据量巨大存储困难&#xff1a;一张DVD只能存储几秒钟的未压缩数字视…

[python]删除列表中相同的元素

去除列表中重复的元素&#xff0c;非常简单&#xff0c;直接上代码&#xff1a; a [11, 21, 3, 4, 3, 2, 5] b list(set(a)) print(a) print(b)运行结果&#xff1a; E:\Program\Python>d.py [11, 21, 3, 4, 3, 2, 5] [2, 3, 4, 5, 11, 21]看到了吗&#xff0c;结果中确实…

js-cookie使用方法

该插件解决了原生js操作cookie的麻烦 js-cookie使用方法 js-cookie用来处理cookie相关的插件&#xff0c;非常简单好用&#xff0c;下面简单记录一下&#xff1a;1、项目中引用&#xff1a; npm install --save js-cookie2、js-cookie的使用&#xff1a; 安装好js-cookie插…

WindowsXP命令行修改服务启动选项

1、修改服务启动类型&#xff1b;使用命令sc&#xff0c;命令使用方法见下例&#xff1a;sc config messenger displayname "messenger" start auto说明&#xff1a;messenger:所要操作的服务名称displayname "messenger":所要操作的服务名称显示出来的名称…