前端开发之HTTP协议认识
上一篇👉: 前端开发之WebSocket通信
文章目录
- 1. HTTP 1.0 和 HTTP 1.1 之间有哪些区别
- 1.连接方面:
- 2.资源传输优化:
- 3.缓存机制增强:
- 4.主机头识别
- 5.请求方法扩展
- 2.`HTTP 1.1` 和 `HTTP 2.0` 的区别
- 1. 二进制分帧层:
- 2.多路复用技术:
- 3.数据流和优先级:
- 4.高效头部压缩:
- 5. 服务器推送:
- 队头阻塞现象:HTTP性能的隐形瓶颈
1. HTTP 1.0 和 HTTP 1.1 之间有哪些区别
| # | 特性 | HTTP 1.0 | HTTP 1.1 |
|---|---|---|---|
| 1 | 连接 | 默认使用非持久连接 | 默认使用持久连接,支持连接复用 |
| 2 | 资源请求优化 | 无范围请求支持,可能导致带宽浪费 | 引入 Range 头域,支持部分内容请求 |
| 3 | 缓存机制 | 依赖 If-Modified-Since, Expires | 引入更多缓存控制指令,如 Etag, If-Unmodified-Since 等 |
| 4 | Host字段 | 无 | 新增 Host 字段,支持虚拟主机 |
| 5 | 请求方法扩展 | 基础请求方法 | 增加了 PUT, HEAD, OPTIONS 等请求方法 |
1.连接方面:
HTTP 1.0默认采用非持久连接,每请求完一个资源就需要重新建立TCP连接,增加了网络延迟。HTTP 1.1引入持久连接(Keep-Alive)作为默认模式,允许同一TCP连接处理多个请求响应,显著提高了效率。
2.资源传输优化:
HTTP 1.0中,客户端即使只需要资源的部分内容,服务器也会发送整个资源,造成带宽浪费。HTTP 1.1增加Range请求头,支持断点续传,仅传输请求区间的内容,有效利用资源。
3.缓存机制增强:
HTTP 1.1扩展了缓存控制指令,如ETag、If-Modified-Since等,提供了更灵活和高效的缓存策略,减少了不必要的数据重传。
4.主机头识别
HTTP 1.1新添Host字段,使得单一IP地址上的多虚拟主机得以区分,促进了现代Web托管技术的发展。
5.请求方法扩展
- HTTP 1.1增加了PUT、HEAD、OPTIONS等请求方法,提升了协议的功能性和灵活性,更好地满足了Web应用的需求。
2.HTTP 1.1 和 HTTP 2.0 的区别
| # | 特性 | HTTP 1.1 | HTTP/2 |
|---|---|---|---|
| 1 | 协议格式 | 基于文本的协议 | 二进制协议,更高效的数据传输 |
| 2 | 多路复用 | 单个连接上请求响应顺序处理,潜在队头阻塞问题 | 实现真正的多路复用,减少延迟,解决队头阻塞问题 |
| 3 | 头信息压缩 | 无头信息压缩 | 引入 HPACK 压缩算法,减少头信息传输大小 |
| 4 | 数据流与优先级控制 | 无 | 每个请求作为独立数据流,支持优先级设置 |
| 5 | 服务器推送功能 | 无 | 支持服务器主动推送资源到客户端,提升加载效率 |
1. 二进制分帧层:
HTTP/2采用了全新的二进制格式而非文本格式,将数据和头信息分割成更小的二进制帧,实现了低开销和高效解析。
2.多路复用技术:
- 解决了
HTTP/1.x的“队头阻塞”问题,HTTP/2允许在一个连接上并行处理多个请求和响应,无需等待前一个请求完成,大大提高了并发性能。
3.数据流和优先级:
- 每个请求或响应作为独立的数据流,携带唯一
ID,HTTP/2允许为不同的数据流分配优先级,确保关键资源优先传输。
4.高效头部压缩:
- 引入
HPACK压缩算法,HTTP/2减少头部大小,通过索引和差异编码技术,极大降低了重复头部信息的传输成本。
5. 服务器推送:
HTTP/2允许服务器预测性地推送客户端可能需要的资源,无需等待额外请求,进一步优化加载时间和用户体验。
队头阻塞现象:HTTP性能的隐形瓶颈
在传统的HTTP/1.x协议中,遵循严格的"请求-应答"模式,构建了一个线性的数据传输通道。这种模式下,每个请求必须等待前一个请求完成其完整的往返过程后才能开始,形成了单一序列的处理队列。形象地说,这是一种“一列纵队过桥”的模式,每辆“车”(请求)必须等待前一辆完全通过桥梁后才能行驶。
原因剖析:
- 串行依赖:由于协议规定了报文的发送与接收必须遵循严格的顺序,即“先来先服务”,导致请求无法并行处理,形成串行队列。
- 无优先排序:队列中的请求不分轻重缓急,完全依据到达顺序决定处理时机,缺乏灵活性。
- 单点瓶颈:一旦队首请求遭遇延迟,比如响应数据大、服务器处理慢等情况,后续所有请求即便已准备好,也只能被动等待,如同交通拥堵中后面的车辆只能跟随停滞。
后果影响:
- 性能损耗:无辜的后续请求被迫等待,整体响应时间延长,用户体验受损。
- 资源闲置:网络带宽和服务器处理能力在等待期间未能充分利用,资源效率低下。
- 放大效应:网络条件不佳或服务器负载较高时,队头阻塞问题更加凸显,可能引发连锁反应,加剧服务性能下降。
因此,队头阻塞成为了限制HTTP/1.x时代Web性能提升的关键因素之一,也是推动HTTP/2引入多路复用、二进制分帧等技术革新的重要背景。
综上所述,从
HTTP 1.0到HTTP/2,协议的演进集中在提升性能、效率和功能性上,特别是解决了网络延迟、带宽浪费和并发处理能力的瓶颈,为现代Web应用提供了更加坚实的基础
下一篇👉: 前端开发之HTTP3
相关文章:
前端开发之HTTP协议认识
上一篇👉: 前端开发之WebSocket通信 文章目录 1. HTTP 1.0 和 HTTP 1.1 之间有哪些区别1.连接方面:2.资源传输优化:3.缓存机制增强:4.主机头识别5.请求方法扩展 2.HTTP 1.1 和 HTTP 2.0 的区别1. 二进制分帧层:2.多路…...
力扣刷题总结 -- 数组26
76. 所有奇数长度子数组的和(简单) 题目要求: 给定一个正整数数组 arr ,计算所有奇数长度子数组的和。 子数组定义为原数组中的一个连续子序列。 返回 arr 中 所有奇数长度子数组的和 。 题目分析: 先得到所有子…...
无线MODBUS通讯模块在供水系统中的应用
一、项目背景 我国是人口大国、农业大国,同时也是贫水大国。由于大量工业废水污染了部分河流、地表的浅层水资源,并且有逐年加重的趋势,再加上农业、绿化等灌溉对水资源的大量消耗,这些因素综合作用进一步加剧了我国水资源紧缺的…...
linux为什么不是实时操作系统
Linux为什么不是实时操作系统? 从我们接触Linux系统开始,一直听到的都是它是非实时操作系统,怎么理解这个非实时呢? 我的理解,非实时,就是中断响应不及时,任务调度不及时。那么,真…...
【STM32】飞控设计
【一些入门知识】 1.飞行原理 【垂直运动】 当 mg>F1F2F3F4,此时做下降加速飞行 当 mg<F1F2F3F4,此时做升高加速飞行 当 mgF1F2F3F4 ,此时垂直上保持匀速飞行。 【偏航飞行】 ω 4 ω 2 ≠ ω 1 ω 3 就会产生水…...
MySQL CDC
一、MySQL CDC概念 MySQL CDC(Change Data Capture),即MySQL变更数据捕获,是一种能够捕获MySQL数据库中数据变化(包括插入、更新和删除操作)的技术。这些变化可以实时或准实时地同步到其他系统或服务中&am…...
手把手教你安装 Vivado2022.2(附安装包)
一、Vivado 2022.2 优势 Vivado 2022.2版本与之前的版本相比,具有以下几个显著的优势: 电源设计管理器(PDM):Vivado 2022.2引入了全新的电源设计管理器(PDM),这是一个下一代功耗评…...
旅行者1号有什么秘密?飞行240多亿公里,为什么没发生碰撞?
旅行者1号有什么秘密?飞行240多亿公里,为什么没发生碰撞? 自古以来,人类就对浩瀚无垠的宇宙充满了好奇与向往。从最初的仰望星空,到如今的深空探测,人类探测宇宙的历史发展可谓是一部波澜壮阔的史诗。 在…...
如何保护云主机安全
在数字化时代,云服务器已成为企业数据存储、处理和传输的重要工具。然而,随着其应用的广泛和深入,云服务器也面临着越来越多的安全威胁。为了应对这些威胁,白名单技术应运而生,成为保护云服务器安全的重要手段。 首先&…...
postman教程-19-mock测试
上一小节我们学习了Postman接口参数化方法,本小节我们讲解一下Postman mock测试的方法。 一、什么叫mock测试 mock测试就是在测试过程中,对某些不容易构造或者不容易获取的对象,用一个虚拟的对象来创建以便于测试的一种测试方法,…...
纳秒级网络库【二】技术选型
在十年之前,已经有网络产品实现7纳秒延迟,所以无需质疑是否能够实现,关键问题是:代价是什么。国内不少量化公司在招聘低延迟总线的开发人员,虽然我不知道他们具体的技术选型,从技术底层来看,并没…...
ESP32基础应用之esp32连接腾讯云并使用微信小程序控制的智能灯
文章目录 1. 项目简介1.1 功能接收1.2 使用资源1.3 测试平台 2 腾讯云物联网开发平台3 esp32设备开发3.1 准备参考例程3.2 vscode平台创建测试工程3.3 修改工程 问题总结使用PowerShell命令行终端生成的二维码不能用 1. 项目简介 1.1 功能接收 实现腾讯云创建项目与设备&…...
Unity Protobuf+RPC+UniTask
远程过程调用(RPC)协议详解 什么是RPC协议RPC的基本原理RPC的关键组件RPC的优缺点Protobuf函数绑定CallEncodeRecvDecodeSocket.Send和Recv项目地址 什么是RPC协议 远程过程调用(Remote Procedure Call,简称RPC)是一种…...
顶顶通呼叫中心中间件(mod_cti基于FreeSWITCH)-通话时长限制
文章目录 前言联系我们场景运用机器人场景普通通话场景 前言 顶顶通呼叫中心中间件限制通话时长有两种写法,分别作用于机器人场景与普通通话场景。 普通场景可分为分机互打、分机外呼手机等。 联系我们 有意向了解呼叫中心中间件的用户,可以点击该链接…...
如何将ai集成到项目中,方法二
上一篇文章:如何将ai集成到radsystems项目中,在项目中引入ai-CSDN博客 上一篇文章内容主要针对于未实现权限分离的项目,这篇文章主要来说一下权限分离的项目怎么做,以及注意的细节。 一、编写前端router.js 二、编写前端askai.vu…...
python的变量的引用与赋值的学习
看代码: a 1 # 初始化变量a,赋值为1 b a # 变量b被赋值为变量a的值,此时b的值也为1 b 2 # 变量b被重新赋值为2 print(a) # 打印变量a的值 执行过程如下: a 1:变量a被赋值为1。b a:变量b被赋值为…...
【FPGA项目】bin文件ram存取回环测试
🎉欢迎来到FPGA专栏~bin文件ram存取回环测试 ☆* o(≧▽≦)o *☆嗨~我是小夏与酒🍹 ✨博客主页:小夏与酒的博客 🎈该系列文章专栏:FPGA学习之旅 文章作者技术和水平有限,如果文中出现错误,希望大…...
北航数据结构与程序设计第五次作业选填题复习
选填题考的很多都是基础概念,对于巩固复习一些仡佬拐角的知识点是很有用的。非北航学生也可以来看看这些题,这一节主要是树方面的习题: 一、 我们首先需要知道一个公式 这是证明: 知道了这个公式,我们把题目中的数据…...
【WEB前端2024】3D智体编程:乔布斯3D纪念馆-第40课-实时订阅后端数据
【WEB前端2024】3D智体编程:乔布斯3D纪念馆-第40课-实时订阅后端数据 使用dtns.network德塔世界(开源的智体世界引擎),策划和设计《乔布斯超大型的开源3D纪念馆》的系列教程。dtns.network是一款主要由JavaScript编写的智体世界引…...
Linux 文件类型,目录与路径,文件与目录管理
文件类型 后面的字符表示文件类型标志 普通文件:-(纯文本文件,二进制文件,数据格式文件) 如文本文件、图片、程序文件等。 目录文件:d(directory) 用来存放其他文件或子目录。 设备…...
ESP32读取DHT11温湿度数据
芯片:ESP32 环境:Arduino 一、安装DHT11传感器库 红框的库,别安装错了 二、代码 注意,DATA口要连接在D15上 #include "DHT.h" // 包含DHT库#define DHTPIN 15 // 定义DHT11数据引脚连接到ESP32的GPIO15 #define D…...
汽车生产虚拟实训中的技能提升与生产优化
在制造业蓬勃发展的大背景下,虚拟教学实训宛如一颗璀璨的新星,正发挥着不可或缺且日益凸显的关键作用,源源不断地为企业的稳健前行与创新发展注入磅礴强大的动力。就以汽车制造企业这一极具代表性的行业主体为例,汽车生产线上各类…...
Redis数据倾斜问题解决
Redis 数据倾斜问题解析与解决方案 什么是 Redis 数据倾斜 Redis 数据倾斜指的是在 Redis 集群中,部分节点存储的数据量或访问量远高于其他节点,导致这些节点负载过高,影响整体性能。 数据倾斜的主要表现 部分节点内存使用率远高于其他节…...
20个超级好用的 CSS 动画库
分享 20 个最佳 CSS 动画库。 它们中的大多数将生成纯 CSS 代码,而不需要任何外部库。 1.Animate.css 一个开箱即用型的跨浏览器动画库,可供你在项目中使用。 2.Magic Animations CSS3 一组简单的动画,可以包含在你的网页或应用项目中。 3.An…...
Netty从入门到进阶(二)
二、Netty入门 1. 概述 1.1 Netty是什么 Netty is an asynchronous event-driven network application framework for rapid development of maintainable high performance protocol servers & clients. Netty是一个异步的、基于事件驱动的网络应用框架,用于…...
论文阅读笔记——Muffin: Testing Deep Learning Libraries via Neural Architecture Fuzzing
Muffin 论文 现有方法 CRADLE 和 LEMON,依赖模型推理阶段输出进行差分测试,但在训练阶段是不可行的,因为训练阶段直到最后才有固定输出,中间过程是不断变化的。API 库覆盖低,因为各个 API 都是在各种具体场景下使用。…...
关于easyexcel动态下拉选问题处理
前些日子突然碰到一个问题,说是客户的导入文件模版想支持部分导入内容的下拉选,于是我就找了easyexcel官网寻找解决方案,并没有找到合适的方案,没办法只能自己动手并分享出来,针对Java生成Excel下拉菜单时因选项过多导…...
ubuntu22.04有线网络无法连接,图标也没了
今天突然无法有线网络无法连接任何设备,并且图标都没了 错误案例 往上一顿搜索,试了很多博客都不行,比如 Ubuntu22.04右上角网络图标消失 最后解决的办法 下载网卡驱动,重新安装 操作步骤 查看自己网卡的型号 lspci | gre…...
使用SSE解决获取状态不一致问题
使用SSE解决获取状态不一致问题 1. 问题描述2. SSE介绍2.1 SSE 的工作原理2.2 SSE 的事件格式规范2.3 SSE与其他技术对比2.4 SSE 的优缺点 3. 实战代码 1. 问题描述 目前做的一个功能是上传多个文件,这个上传文件是整体功能的一部分,文件在上传的过程中…...
