您现在的位置是:首页 > 正文

HTTP1.0 HTTP 1.1 HTTP 2.0主要区别

2024-01-30 22:26:45阅读 0

HTTP1.0 HTTP 1.1主要区别

长连接

HTTP 1.0需要使用keep-alive参数来告知服务器端要建立一个长连接,而HTTP1.1默认支持长连接。

HTTP是基于TCP/IP协议的,创建一个TCP连接是需要经过三次握手的,有一定的开销,如果每次通讯都要重新建立连接的话,对性能有影响。因此最好能维持一个长连接,可以用个长连接来发多个请求。

节约带宽

HTTP 1.1支持只发送header信息(不带任何body信息),如果服务器认为客户端有权限请求服务器,则返回100,否则返回401。客户端如果接受到100,才开始把请求body发送到服务器。

这样当服务器返回401的时候,客户端就可以不用发送请求body了,节约了带宽。

另外HTTP还支持传送内容的一部分。这样当客户端已经有一部分的资源后,只需要跟服务器请求另外的部分资源即可。这是支持文件断点续传的基础。

HOST域

现在可以web server例如tomat,设置虚拟站点是非常常见的,也即是说,web server上的多个虚拟站点可以共享同一个ip和端口。

HTTP1.0是没有host域的,HTTP1.1才支持这个参数。

HTTP1.1 HTTP 2.0主要区别

多路复用

HTTP2.0使用了多路复用的技术,做到同一个连接并发处理多个请求,而且并发请求的数量比HTTP1.1大了好几个数量级。

当然HTTP1.1也可以多建立几个TCP连接,来支持处理更多并发的请求,但是创建TCP连接本身也是有开销的。

TCP连接有一个预热和保护的过程,先检查数据是否传送成功,一旦成功过,则慢慢加大传输速度。因此对应瞬时并发的连接,服务器的响应就会变慢。所以最好能使用一个建立好的连接,并且这个连接可以支持瞬时并发的请求。

数据压缩

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

服务器推送

意思是说,当我们对支持HTTP2.0的web server请求数据的时候,服务器会顺便把一些客户端需要的资源一起推送到客户端,免得客户端再次创建连接发送请求到服务器端获取。这种方式非常合适加载静态资源。

服务器端推送的这些资源其实存在客户端的某处地方,客户端直接从本地加载这些资源就可以了,不用走网络,速度自然是快很多的。

网站文章

  • Ansible安装与配置(自动化运维管理工具) 热门推荐

    Ansible安装与配置(自动化运维管理工具) 热门推荐

    原文链接:http://blog.csdn.net/xyang81/article/details/51568227Ansible是一个简单高效的自动化运维管理工具,用Python开发,能大批量管理N...

    2024-01-30 22:26:39
  • 在Vue中封装一个select组件 热门推荐

    在Vue中封装一个select组件 热门推荐

    我们使用iview封装一个select组件 封装的是每一个select下拉框 <template> <div class='select'> <i-select :model.sync='selecteddata' :placeholder='placeholdertext' filterable multiple...

    2024-01-30 22:25:59
  • jsp ajax不返回数据,【100分】ajax在jsp页面接受不到数据解决方法

    当前位置:我的异常网» Java Web开发»【100分】ajax在jsp页面接受不到数据解决方法【100分】ajax在jsp页面接受不到数据解决方法www.myexceptions.net网友分享于:2013-03-20浏览:42次【100分】ajax在jsp页面接受不到数据大家帮我看看是哪的问题啊 ,我刚接触ajax-------jsp页面--------var xmlHttp;f...

    2024-01-30 22:25:53
  • jquery autocomplete前后台整合实例(1)

    最近在做项目时需要用到搜索自动提示,例如姓名查找模糊匹配提示。目前Jquery的自动提示插件非常多,我会例举几款,写出一些与后台交互的例子本文介绍一款Jquery autocomplete官方地址:https://github.com/devbridge/jQuery-Autocomplete下面直接来实例,不玩虚的,不参与后台交互的这里就不做介绍了,本文涉及的后台开发语言是java,

    2024-01-30 22:25:44
  • hadoop安装教程,分布式配置 CentOS7 Hadoop3.1.2

    hadoop安装教程,分布式配置 CentOS7 Hadoop3.1.2

    安装前的准备 1、 准备4台机器、或虚拟机 4台机器的名称和IP对应如下 master:192.168.199.128 slave1:192.168.199.129 slave2:192.168.199.130 slave3:192.168.199.131 2、分别为4台机器安装JDK8 步骤详细请参考:CentOS7卸载 OpenJDK 安装Sun的JDK...

    2024-01-30 22:25:11
  • 【OpenCV3】阈值化操作——cv::threshold()与cv::adaptiveThreshold()详解

    【OpenCV3】阈值化操作——cv::threshold()与cv::adaptiveThreshold()详解

    阈值化操作在图像处理中是一种常用的算法,比如图像的二值化就是一种最常见的一种阈值化操作。opencv2和opencv3中提供了两种阈值化操作接口,即cv::thread()与cv::adaptiveThreshold(),这里将对这两个接口进行介绍和对比。

    2024-01-30 22:25:04
  • 基于darknet的目标检测开发说明书

    1. 测试darknet1) 利用python版本的darknet清楚YOLO V3的输出.其中要修改一下加载meta数据集, 即*.data中的*.names文件路径. 在测试过程中, 我们将用到meta.classes, meta.names. 这些信息都在*.data中定义了. 经过测试, 对于一张头像而言, YOLO V3的输出格式为:[('car', 0.9995980858802...

    2024-01-30 22:24:58
  • paxos算法java实现_基于python的Paxos算法实现

    paxos算法java实现_基于python的Paxos算法实现

    理解一个算法最快,最深刻的做法,我觉着可能是自己手动实现,虽然项目中不用自己实现,有已经封装好的算法库,供我们调用,我觉着还是有必要自己亲自实践一下。这里首先说明一下,python这种动态语言,对不熟...

    2024-01-30 22:24:41
  • android studio 集成ffmpeg_android下vulkan与opengles纹理互通

    android studio 集成ffmpeg_android下vulkan与opengles纹理互通

    先放demo源码地址:https://github.com/xxxzhou/aoce 06_mediaplayer效果图:主要几个点:用ffmpeg打开rtmp流。使用vulkan Compute s...

    2024-01-30 22:24:11
  • Babel转码器入门

    Babel转码器入门

    Babel转码

    2024-01-30 22:24:05