网络学习(15)|有http/1为什么还会有http/2

HTTP/1(具体来说是HTTP/1.1)在互联网的早期阶段是非常成功的,它标准化了客户端和服务器之间的请求-响应模型,使得Web能够迅速扩展和普及。然而,随着Web的复杂性和流量的增加,HTTP/1.1的一些设计上的局限性开始显现,导致了性能瓶颈和效率问题。这些问题主要体现在以下几个方面:

  1. 串行阻塞(Head-of-line blocking):
    在HTTP/1.1中,一个TCP连接同一时间只能处理一个请求。如果一个请求需要较长时间来响应,那么后续的请求就必须等待,即使服务器有空闲的资源也无法处理这些等待中的请求。这被称为串行阻塞。
  2. 连接管理开销:
    由于HTTP/1.1的每个请求都需要建立和维护一个TCP连接,这导致了大量的连接管理开销。虽然引入了持续连接(keep-alive)机制来重用连接,但这仍然不能完全避免连接管理带来的性能损耗。
  3. 过度的往返延迟:
    每个请求和响应都需要至少一次完整的往返时间(Round Trip Time, RTT),这对于远距离的请求特别不利,因为RTT会显著增加。
  4. 不必要的数据传输:
    HTTP/1.1的报文头部通常是纯文本,这导致了不必要的带宽消耗,尤其是当重复的头部信息被频繁发送时。

为了解决这些问题,HTTP/2协议应运而生。HTTP/2的主要改进包括:

  1. 多路复用(Multiplexing):
    HTTP/2允许在同一个TCP连接上同时处理多个请求,从而消除了串行阻塞的问题。这意味着一个连接可以同时处理多个请求和响应,提高了效率。
  2. 二进制分帧:
    HTTP/2将请求和响应数据分割成更小的二进制帧,这减少了数据传输的开销,并且使得错误检测和恢复更加高效。
  3. 头部压缩(HPACK):
    HTTP/2使用HPACK算法来压缩报文头部,减少因重复发送头部信息而导致的带宽浪费。
  4. 优先级和流控制:
    HTTP/2引入了优先级和流控制机制,允许客户端和服务器指定请求的优先级,并且控制数据流的速度,以防止过载。
  5. 服务器推送(Server Push):
    HTTP/2允许服务器主动向客户端推送资源,而无需等待客户端显式请求,这可以减少延迟并提高性能。

综上所述,HTTP/2通过引入一系列底层的传输优化,极大地改善了Web应用的性能,尤其是在高延迟和多资源加载的场景下。因此,HTTP/2逐渐成为现代Web应用的首选协议。

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

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

相关文章

《计算广告》第3版读书笔记

1.基本概念 (1)效果广告:马上带来大量的购买或其他转化行为,即短期看到效果的广告。比如李佳琦头部直播卖货。 (2)品牌广告:宣传品牌形象,提升中长期购买率与利润空间。比如杨紫代言。 (3&am…

python创建虚拟环境venv

为什么要创建虚拟环境 使用python创建虚拟环境是为了让项目的依赖隔离开来,互不干扰,使得每个项目都运行在一个独立的Python环境中。 创建虚拟环境 1. 命令行创建 step1. 创建 # 1. 进入到你的项目目录中 cd myproject # 使用python创建一个虚拟环境…

音视频入门基础:H.264专题(1)——H.264官方文档下载

音视频入门基础:H.264专题系列文章: 音视频入门基础:H.264专题(1)——H.264官方文档下载 音视频入门基础:H.264专题(2)——使用FFmpeg命令生成H.264裸流文件 音视频入门基础&…

DDMA信号处理以及数据处理的流程---距离速度测量

Hello,大家好,我是Xiaojie,好久不见,欢迎大家能够和Xiaojie一起学习毫米波雷达知识,Xiaojie准备连载一个系列的文章—DDMA信号处理以及数据处理的流程,本系列文章将从目标生成、信号仿真、测距、测速、cfar检测、测角、目标聚类、目标跟踪这几个模块逐步介绍,这个系列的…

Python和Java怎么选择?

Python和Java的较量一年又一年地持续,那么要怎么选择学习哪种编程语言呢? 两种语言在不同的应用场景中都能展现出强大的能力,几乎涵盖了所有其他编程语言所能实现的功能,包括但不限于网站开发、图形用户界面设计、图像处理、大数…

完整迁移方案+工具:Citrix替换,无感迁移!

随着用户的替换进程进入到演进的阶段,用户面临的重大挑战包括: (1)大量数据的迁移需要精确规划,以避免数据丢失或损坏; (2)迁移效率低下,不仅会增加迁移成本,…

B端系统的UI框架选择,不要输在了起跑线,如何破?

所谓成也框架、败也框架,框架就是这么的优点和缺点鲜明,市面上的框架多如牛毛,谁家的最优秀呢?为何框架搞出来的UI界面同质化呢,如何避免这种情况,如何在框架的基础上进一步提升颜值和体验呢,本…

LabVIEW回热系统热经济性分析及故障诊断

开发了一种利用LabVIEW软件的电厂回热系统热经济性分析和故障诊断系统。该系统针对火电厂回热加热器进行优化,通过实时数据监控与分析,有效提高机组的经济性和安全性,同时降低能耗和维护成本。系统的实施大幅提升了火电厂运行的效率和可靠性&…

MyBatis-RedisCache源码分析

回顾 在前面,我们通过 redis​ 集成了 MyBatis​ 的二级缓存,MyBatis的二级缓存整合redis ,接下来,我们来分析一下 RedisCache​ 的源码。 源码分析 RedisCache 主要是通过实现 Cache 接口来做的。数据存储和获取主要是通过操作…

Linux Vim最全教程

Vim是一款在Linux系统中广泛使用的文本编辑器,其多模式的特性使得用户能够高效地进行文本编辑工作。以下是一个关于Vim的最全教程,涵盖了Vim的基本认识、安装、配置、使用技巧等方面。 一、Vim的基本认识 Vim是vi编辑器的升级版,它是一款多…

引领潮流!Xinstall创新技术让App免填邀请码成为可能,轻松吸引海量用户!

在快速变化的互联网环境下,App推广和运营面临着诸多挑战。如何迅速搭建起满足用户需求的运营体系,提高获客转化的效率和用户留存,成为了众多企业急待解决的问题。而邀请码作为App推广中常见的手段,其繁琐的填写过程常常让用户望而…

代码随想录算法训练营第六十四天 | 图论理论基础、深搜理论基础、广搜理论基础、98. 所有可达路径

图论理论基础 我写在了个人语雀笔记中 https://www.yuque.com/yuqueyonghu8mml9e/bmbl71/ex473q4y0ebs0l3r?singleDoc# 深搜理论基础 https://www.yuque.com/yuqueyonghu8mml9e/bmbl71/zamfikz08c2haptn?singleDoc# 98. 所有可达路径 题目链接:98. 所有可达…

【202406A]冰山计划

A. [202406A]冰山计划 文件操作 时间限制: 1000ms 空间限制: 524288KB 输入文件名: 202406A.in 输出文件名: 202406A.out Accepted 100 分 题目描述 一入夏,气温就飙到了40℃,鱼大大要被热成鱼干了,他现在急需降温,而且得是大…

Orangepi Zero2

1、Orangepi Zero2 Orangepi Zero2 是基于全志H616的一款产品 特性: CPU全志H616四核64位1.5GHz高性能Cortex-A53处理器 GPU MaliG31MP2 SupportsOpenGLES1.0/2.0/3.2、OpenCL2.0 运行内存1GB DDR3(与GPU共享) 存储TF卡插槽,测试128G可支持、2MB SPI Fl…

ImageNet-1k 测试集 两大坑

1、官方网站提交test set标签时,千万不能提交zip文件,即便明文说可以 https://image-net.org/challenges/LSVRC/eval_server.php 不然就会浪费一次提交机会,直接提交submission.txt就可以,注意每排5个预测结果,用于计…

Java安全

Java安全 Java2Sec靶场搭建 靶场地址 https://github.com/bewhale/JavaSec 查看数据库配置文件,mysql,用户名密码根据自己数据库密码更改 使用小皮面板的mysql,新建一个数据名为javasec的数据库 运行javasec.sql文件 下载运行jar包即可 …

图卷积网络(Graph Convolutional Network, GCN)

图卷积网络(Graph Convolutional Network, GCN)是一种用于处理图结构数据的深度学习模型。GCN编码器的核心思想是通过邻接节点的信息聚合来更新节点表示。 图的表示 一个图 G通常表示为 G(V,E),其中: V 是节点集合,…

2024 New Relic Java 生态系统报告

New Relic 发布了 2024 年度 Java 生态系统报告,数据来源于使用 New Relic 监控的线上 Java 应用。从这个报告中,我们可以看到 Java 发展的一些趋势。 在 Java 版本方面,新版本的使用率越来越高。Java 11 的使用率是 32.9%,Java 1…

Jenkins教程-5-gitee自动化测试任务构建

上一小节我们学习了Jenkins构建gitlab自动化测试任务的方法,本小节我们讲解一下gitee自动化测试任务的构建方法。 接下来我们以windows系统为例,讲解一下构建实际自动化测试任务的具体步骤。 安装git和gitee插件 点击进入Jenkins插件管理页面 安装完插…