当前位置: 首页 > news >正文

前端开发之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.0HTTP 1.1
1连接默认使用非持久连接默认使用持久连接,支持连接复用
2资源请求优化无范围请求支持,可能导致带宽浪费引入 Range 头域,支持部分内容请求
3缓存机制依赖 If-Modified-Since, Expires引入更多缓存控制指令,如 Etag, If-Unmodified-Since
4Host字段新增 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.1HTTP 2.0 的区别

#特性HTTP 1.1HTTP/2
1协议格式基于文本的协议二进制协议,更高效的数据传输
2多路复用单个连接上请求响应顺序处理,潜在队头阻塞问题实现真正的多路复用,减少延迟,解决队头阻塞问题
3头信息压缩无头信息压缩引入 HPACK 压缩算法,减少头信息传输大小
4数据流与优先级控制每个请求作为独立数据流,支持优先级设置
5服务器推送功能支持服务器主动推送资源到客户端,提升加载效率

1. 二进制分帧层:

  • HTTP/2采用了全新的二进制格式而非文本格式,将数据和头信息分割成更小的二进制帧,实现了低开销和高效解析。

2.多路复用技术:

  • 解决了HTTP/1.x的“队头阻塞”问题,HTTP/2允许在一个连接上并行处理多个请求和响应,无需等待前一个请求完成,大大提高了并发性能。

3.数据流和优先级:

  • 每个请求或响应作为独立的数据流,携带唯一IDHTTP/2允许为不同的数据流分配优先级,确保关键资源优先传输。

4.高效头部压缩:

  • 引入HPACK压缩算法,HTTP/2减少头部大小,通过索引和差异编码技术,极大降低了重复头部信息的传输成本。

5. 服务器推送:

  • HTTP/2允许服务器预测性地推送客户端可能需要的资源,无需等待额外请求,进一步优化加载时间和用户体验。

队头阻塞现象:HTTP性能的隐形瓶颈

在传统的HTTP/1.x协议中,遵循严格的"请求-应答"模式,构建了一个线性的数据传输通道。这种模式下,每个请求必须等待前一个请求完成其完整的往返过程后才能开始,形成了单一序列的处理队列。形象地说,这是一种“一列纵队过桥”的模式,每辆“车”(请求)必须等待前一辆完全通过桥梁后才能行驶。

原因剖析:

  • 串行依赖:由于协议规定了报文的发送与接收必须遵循严格的顺序,即“先来先服务”,导致请求无法并行处理,形成串行队列。
  • 无优先排序:队列中的请求不分轻重缓急,完全依据到达顺序决定处理时机,缺乏灵活性。
  • 单点瓶颈:一旦队首请求遭遇延迟,比如响应数据大、服务器处理慢等情况,后续所有请求即便已准备好,也只能被动等待,如同交通拥堵中后面的车辆只能跟随停滞。

后果影响:

  • 性能损耗:无辜的后续请求被迫等待,整体响应时间延长,用户体验受损。
  • 资源闲置:网络带宽和服务器处理能力在等待期间未能充分利用,资源效率低下。
  • 放大效应:网络条件不佳或服务器负载较高时,队头阻塞问题更加凸显,可能引发连锁反应,加剧服务性能下降。

因此,队头阻塞成为了限制HTTP/1.x时代Web性能提升的关键因素之一,也是推动HTTP/2引入多路复用、二进制分帧等技术革新的重要背景。

综上所述,从HTTP 1.0HTTP/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 就会产生水…...

MSPM0G3507——引脚分布图

...

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测试就是在测试过程中,对某些不容易构造或者不容易获取的对象,用一个虚拟的对象来创建以便于测试的一种测试方法&#xff0c…...

纳秒级网络库【二】技术选型

在十年之前,已经有网络产品实现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编写的智体世界引…...

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明:假设每台服务器已…...

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向: 逆向设计 通过神经网络快速预测微纳结构的光学响应,替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…...

渲染学进阶内容——模型

最近在写模组的时候发现渲染器里面离不开模型的定义,在渲染的第二篇文章中简单的讲解了一下关于模型部分的内容,其实不管是方块还是方块实体,都离不开模型的内容 🧱 一、CubeListBuilder 功能解析 CubeListBuilder 是 Minecraft Java 版模型系统的核心构建器,用于动态创…...

【快手拥抱开源】通过快手团队开源的 KwaiCoder-AutoThink-preview 解锁大语言模型的潜力

引言: 在人工智能快速发展的浪潮中,快手Kwaipilot团队推出的 KwaiCoder-AutoThink-preview 具有里程碑意义——这是首个公开的AutoThink大语言模型(LLM)。该模型代表着该领域的重大突破,通过独特方式融合思考与非思考…...

MVC 数据库

MVC 数据库 引言 在软件开发领域,Model-View-Controller(MVC)是一种流行的软件架构模式,它将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller)。这种模式有助于提高代码的可维护性和可扩展性。本文将深入探讨MVC架构与数据库之间的关系,以…...

鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/

使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题:docker pull 失败 网络不同,需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...

Java多线程实现之Thread类深度解析

Java多线程实现之Thread类深度解析 一、多线程基础概念1.1 什么是线程1.2 多线程的优势1.3 Java多线程模型 二、Thread类的基本结构与构造函数2.1 Thread类的继承关系2.2 构造函数 三、创建和启动线程3.1 继承Thread类创建线程3.2 实现Runnable接口创建线程 四、Thread类的核心…...

为什么要创建 Vue 实例

核心原因:Vue 需要一个「控制中心」来驱动整个应用 你可以把 Vue 实例想象成你应用的**「大脑」或「引擎」。它负责协调模板、数据、逻辑和行为,将它们变成一个活的、可交互的应用**。没有这个实例,你的代码只是一堆静态的 HTML、JavaScript 变量和函数,无法「活」起来。 …...

高考志愿填报管理系统---开发介绍

高考志愿填报管理系统是一款专为教育机构、学校和教师设计的学生信息管理和志愿填报辅助平台。系统基于Django框架开发,采用现代化的Web技术,为教育工作者提供高效、安全、便捷的学生管理解决方案。 ## 📋 系统概述 ### 🎯 系统定…...

es6+和css3新增的特性有哪些

一:ECMAScript 新特性(ES6) ES6 (2015) - 革命性更新 1,记住的方法,从一个方法里面用到了哪些技术 1,let /const块级作用域声明2,**默认参数**:函数参数可以设置默认值。3&#x…...