浏览器队头阻塞问题

前端性能优化(2026简单易懂详解) 性能优化这个词我们经常会在前端的工作或面试中遇到,这个东西说难好像也并不怎么难,毕竟谁都能说上几点。但是如果你想在工作上遇到各种场景的性能瓶颈时都有直击本质的性能方案,或者在面试时让面试官眼前一亮,那就不能只拘泥于『想到哪说到哪』或者『说个大概』,而要有一套体系化的、各个角度的、深入了解的知识图谱。这篇文章也算对我个人的前端知识的一次归纳总结,因为『性能优化』不仅仅是『优化』,什么意思呢?实施优化方案之前,首先要知道为什么要这样优化,这么做的目的是什么。这就需要你上到框架、js、css,下到浏览器、js 阅读详情

定义

队头阻塞是指:当单个(慢)对象阻止其他/后续的对象前进时。

举例

假设你去超市买东西,超市只有一个收银台,正在结算的客户因为办理会员,从包里找身份证迟迟没找到,就会耽误后面排队的人结算。另一个例子是在单行道上,发生一起车祸可能会导致整条道路堵塞很长时间。因此,在“头部”的单一问题可以阻塞整条线。

浏览器队头阻塞问题

在浏览器中打开一个页面进行操作时,可能会发出多个网络请求,假设其中的若干请求响应较慢(比如10s以上),继续页面上的操作可能就会收到阻塞。

分析

HTTP1.0所实现的TCP连接中,HTTP请求必须等待前一个请求响应之后,才能发送,也就是说,如果在一个TCP通道中如果某个HTTP请求的响应因为某个原因没有及时返回,后面的响应会被阻塞,这就是队头阻塞问题,它是网络请求性能问题阻塞页面响应的源头。HTTP1.1时代,TCP支持了长连接,每个TCP连接可以处理多个HTTP请求,用于解决队头阻塞问题。

HTTP 协议建议客户端使用并发长连接,这个并发指的是TCP并发。RFC2616 里明确限制每个客户端可以建立两个长连接,需要说明的是,客户端建立长连接的个数是针对域名发起的。但是一般浏览器会把并发连接数增加到6到8个,谷歌浏览器是6个,也就是页面中如果针对同一个域名有多个HTTP请求,谷歌浏览器会针对这个域名建立6个TCP长连接,在每个长连接里面再去处理HTTP请求,但是这种方案其实对服务器的挑战非常大,有些Web优化方案中还会突破6到8的限制,那就是域名切片,因为长连接是针对的同一个域名,那么如果开发人员将资源分布在不同的域名上,那么长连接的数量也是可以被突破的。假设客户端在交互过程中发出的请求足够多,且响应延时严重,长连接的数量可能被耗尽,导致更多的请求无法发出,最终阻塞客户端,造成用户体验问题。

解决办法

  1. 采用域名切片。如果有需要、有条件,页面请求非常多的情况下,可将部分网络请求进行域名分片,也就是将请求落到不同的域名下,可突破原有长连接的数量限制。

    2) 提升服务端的响应速度。如果流畅的响应体验比较重要,服务端应遵循快速响应原则,超时则认为失败,错误则快速返回,甚至服务端可以请求进行异步处理,只要接收到数据就返回成功,并设置严格的响应超时时间。

    3) 减少请求数量。条件允许的话,可对网络请求进行合并。

HTTP/3与QUIC:从TCP队头阻塞到UDP传输重构 网络传输协议决定了数据在互联网上如何高效、可靠地流动。经典TCP协议凭借确认重传机制保证了可靠性,但在高并发Web场景下,其按序交付特性容易引发队头阻塞,即使HTTP/2多路复用也无法从根本上缓解。HTTP/3应运而生,它基于UDP重新实现了QUIC传输层,将可靠传输、加密握手与多流隔离融为一体,通过独立的stream机制将丢包影响限制在单条流内,并利用0-RTT与连接迁移大幅改善移动网络体验。从公网HTTPS加速到弱网视频通信,QUIC正成为现代网络架构优化的重要方向。理解TCP与UDP的权衡、HTTP/ 阅读详情

相关推荐

【KO】前端面试七

是浏览器提供的 API,可监听元素与视口(或指定容器)的“交叉状态”(即元素是否进入视口),无需手动计算滚动位置,性能优于传统scroll事件监听。

abbiz的博客 1322

浏览器并发请求数以及解决办法

页面卡顿,需要好长一段时间才能加载完成,除了优化本身,还需要注意浏览器的并发数...

xzhlg57656的博客 1万+

从前端出发了解浏览器与HTTP协议:浏览器输入url => 页面渲染全过程详解

浏览器发出请求到获得响应的过程 当你在浏览器中想访问www.google.com时,会进行以下操作 应用层 DNS解析,这里 DNS服务器通过域名查询到具体的IP然后下发数据给传输层 传输层 通过TCP三次握手和服务器建立连接,四次挥手释放连接,这里 TCP 协议会指明两端的端口号 TCP 协议的作用是,提供可靠的字节流服务,保证数据通信的完整性和可靠性,防止丢包。字节流服务是指,为了方便传输,将大块数据分割成以报文段为单位的数据包进行管理。而可靠的传输服务是指,能够把数据准确可靠地传给对方。

qq_34666266的博客 612

浏览器请求队列机制-请求为什么会阻塞

前言最近遇到一个问题,我1个站点链接2个后端服务,但1个后端服务有问题,导致访问超时,但请求接口都是分开的。自认为一个服务站点请求超时,不会影响到另外一个请求的,但不是。全部请求都发不出去。为什么呢?是不是浏览器有请求机制管理?正常情况前端站点都是对应一个服务的,如果前面一个请求有问题,那么后面一个请求访问不下去也正常。请求都是瀑布型一个请求接一个请求有关联的。所以不了解也没什么问题。但多个后端服务

rth362147773的博客 1万+

【蓝桥杯——单片机学习笔记】十三.点阵(STC15F2K60S2)

一.点阵内部图 点阵的有两种,分为共阴和共阳(与数码管类似,后续代码根据共阳点阵编写)。点阵的控制主要是每行和每列电平的控制。如图,以共阳为例:若要使左上角的灯亮,则第一行输出高电平(其他行均为低电平),第一列输出低电平(其他列均为高电平)。 二.原理图 与数码管共用接口,所以数码管和点阵的显示只能选一个使用! 原理图中点阵的接口R5即代表第5行(Row),C8即代表第8列(Column)。通...

默默无闻小菜鸡的博客 2011

别再傻傻分不清了!用Design Compiler和PrimeTime实操对比PBA与GBA模式

本文深度解析静态时序分析(STA)中Design Compiler与PrimeTime工具的PBA与GBA模式差异,通过实际案例演示两种模式在转换时间计算、时钟路径分析等方面的对比,并提供工程实践中模式选择的策略与调试技巧,帮助工程师在芯片设计流程中平衡精度与效率。

weixin_42552315的博客 414

浏览器的解析渲染原理以及JS、CSS阻塞问题分析

浏览器的解析渲染原理以及JS、CSS阻塞问题分析 输入Url地址按下回车发生了什么? 1:根据网址进行DNS解析,将相应的域名解析为IP地址 2:客户端根据IP地址去寻找对应的服务器并进行TCP三次握手,建立TCP连接 3:客户端发起HTTP请求,请求对应资源 4:服务器响应并返回相应数据(如:HTML文件) 5:浏览器将获取的HTML文档由HTML解析器解析成DOM树 6:同时由CSS解析器将CSS样式解析成CSS Rule Tree(CSS规则树) 7:将生成的DOM树和CSS规则树合并生成Render

song854601134的博客 2449

慕课软件质量保证与测试(习题集)

慕课金陵科技学院.软件质量保证与测试.期末复习.习题汇总0 总目录1 绪论1.1 软件质量保证与测试的产生与发展1.2 软件缺陷,软件错误,软件故障1.3 软件质量保证与测试的意义,原则和挑战1.4 单元测试1.5 课后作业2 软件测试策略2.1 软件测试的模型,过程和生命周期2.2 软件测试的方法和技术2.3 单元测试2.4 课后作业3 黑盒测试3.1 黑盒测试概述3.2 等价类划分测试3.3 边界值测试3.4 错误推测法3.5 判定表驱动法3.6 因果图法3.7 场景法3.8 正交实验法3.9 单元测试

weixin_42473228的博客 5万+

Http 长连接 队头阻塞 性能优化

1.短连接及长连接 早期的 HTTP 协议也被称为是“无连接”的协议。不会与服务器保持长期的连接状态,所以也称为短连接。 到Http1.1就出现了长连接的通信方式,也叫“持久连接”(persistent connections)、“连接保活”(keep alive)、“连接复用”(connection reuse)。 短连接以及长连接都可以用下图很好的解释 其实蛮好理解,短连接就是ht...

前端开发一枚 2229

STC8单片机低功耗延时优化实践:从循环等待到定时唤醒

本文深入探讨了STC8单片机低功耗延时优化的核心方法,即利用掉电唤醒定时器(WKT)替代传统的循环等待,实现从“空转耗电”到“定时唤醒”的转变。通过实战代码演示了如何编写低功耗延时函数,将待机电流从mA级降至μA级,并分析了精度、唤醒时间等关键权衡点,为电池供电的物联网设备提供了有效的续航优化方案。

pea55的博客 324

CloudCompare实战:5分钟搞定点云数据预处理(含常见格式转换技巧)

本文提供了一套基于CloudCompare的5分钟点云数据预处理实战指南。文章详细讲解了如何利用这款开源工具,快速完成点云数据的格式转换(如LAS转PLY)、统计离群值降噪、体素网格下采样以及交互式裁剪等核心操作,帮助用户高效清理和规整杂乱数据,为后续分析建模奠定基础。

weixin_29207533的博客 475

浏览器工作原理与实践--HTTP/3:甩掉TCP、TLS 的包袱,构建高效网络

好了,今天就介绍到这里,下面我来总结下本文的主要内容。我们首先分析了HTTP/2中所存在的一些问题,主要包括了TCP的队头阻塞、建立TCP连接的延时、TCP协议僵化等问题。这些问题都是TCP的内部问题,因此要解决这些问题就要优化TCP或者“另起炉灶”创造新的协议。由于优化TCP协议存在着诸多挑战,所以官方选择了创建新的QUIC协议。HTTP/3正是基于QUIC协议的,你可以把QUIC看成是集成了“TCP+HTTP/2的多路复用+TLS等功能”的一套协议。

echohuangshihuxue的博客 1371

《Arduino与LabVIEW开发实战》第2章 LabVIEW基础

第2章 LabVIEW基础 2.1 LabVIEW与虚拟仪器 2.1.1 什么是虚拟仪器 仪器仪表发展方向有很多,其中一个重要方向是将计算机和仪器结合起来。具体来说有两种方式,一种是将微处理器或微控制器嵌入到仪器中,构建智能化的内含嵌入式系统的仪器仪表,这是嵌入式仪器;另一种是将仪器装入计算机中,以通用计算机硬件及操作系统为载体,外配数据采集卡等外部设备,通过编制不同功能的程序,以实现多种仪...

jxgy01的博客 490

记一次Http长连接队头阻塞问题

一、现象 1.同一个浏览器多个窗口,所有的接口请求堵塞 2.不同浏览器,同一个账号,同一个请求接口不堵塞 3.同一个浏览器,通过接口网关调用,请求堵塞。直接通过ip访问,正常 二、直接原因 nginx里,错误的将一个长连接服务的ip地址配置错误,导致长连接一直无法使用,堵塞了http请求。 三、队头阻塞 “队头阻塞”与短连接和长连接无关,而是由 HTTP 基本的“请求 - 应答”模型所导致的。因为 HTTP 规定报文必须是“一发一收”,这就形成了一个先进先出的“串行”队列。 队列里的请求没有

南极亚拉的博客 767

焊缝缺陷智能检测:基于 YOLO 的工业质检系统实战

从焊缝缺陷数据集的构建到模型训练,从桌面检测界面到缺陷统计输出,本文覆盖了一套工业焊缝质检系统的完整路线。这个场景的核心难点在数据层面——气孔和裂纹这类小目标的标注质量直接决定了模型的最终表现。建议先在开源数据集上跑通全链路,确认 mAP 达到可接受的水平后,再通过补充特定类型的小目标数据和提升输入分辨率来做精度优化。工业场景中,漏检一个气孔的成本和误报一个假阳性的成本不一样——根据对两类成本的承受力,调整置信度阈值来找到业务上的最佳平衡点。

m0_71589036的博客 201

【全志V821_FoxPi】6-2 IMX219 MIPI摄像头适配

全志V821芯片适配IMX219 MIPI摄像头(2lane)教程,基于FoxPi开发板V1.2 SDK。文章详细介绍了IMX219的技术参数(800万像素、1/4英寸CMOS、支持1080P@30fps输出)及模组接口原理图。重点展示了设备树配置方法,包括PIO引脚定义(TWI0使用PA3/PA4,复位引脚PA2)、TWI0节点设置(100kHz时钟)以及VIND0节点中sensor0的完整配置(I2C地址0x20、MCLK0、RAW格式输出等)。配置过程强调需注意IMX219的器件地址转换(0x10→0

第四维度的博客 2248

浏览器原理 30 # HTTP/3

说明 浏览器工作原理与实践专栏学习笔记 前言 在 HTTP/1.1 时代,为了提升并行下载效率,浏览器为每个域名维护了 6 个 TCP 连接;而采用 HTTP/2 之后,浏览器只需要为每个域名维护 1 个 TCP 持久连接,同时还解决了 HTTP/1.1 队头阻塞的问题。 那么 HTTP/2 到底有什么缺陷? TCP 的队头阻塞 虽然 HTTP/2 解决了应用层面的队头阻塞问题,不过和 HTTP/1.1 一样,HTTP/2 依然是基于 TCP 协议的,而 TCP 最初就是为了单连接而设计的。 正常情况下的

学习前端这门手艺,栈底到栈顶依次是:浏览器架构、Web 网络、事件循环机制、JavaScript 核心、V8 的内存管理、浏览器的渲染流程、Web 安全、CSS、React、Vue、Node、构建工具链等 2016

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

web浏览器与网站服务器,Web浏览器如何与Web服务器通信

Web浏览器如何与Web服务器通信 在理解Web优化的必要性之前,要先知道问题根源所在——浏览器和服务器通信方式的基本属性导致了这个问题,如图1-2所示。图1-2 用户向example.com发送请求。用户通过浏览器发送网页请求,然后必须等待服务器响应并发送内容。服务器发送响应后,用户才能在浏览器中接收到网页当人们说“Web性能的重点是网站加载速度更快”时,他们的主要关注点是缩短加载时间。简言之...

weixin_32028323的博客 1132

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

面试题:一个 URL 在浏览器被输入到页面展现的过程中发生了什么

这是一个经典的面试题:一个URL从浏览器到页面的过程中发生了什么,那么今天就带大家九浅一深来研究一下

qq_32139981的博客 1097

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

计算机网络经典问题透视:浏览器同时打开多个TCP连接进行浏览的优缺点深度剖析

本文系统分析了浏览器采用多TCP连接策略的历史背景、技术原理及性能影响。在HTTP/1.x时代,为克服协议层面的串行处理限制,浏览器通过建立多个并发连接(通常每个域名6个)实现资源并行下载,显著提升了页面加载速度。这种策略虽简单有效,但带来了资源消耗大、带宽竞争不公平等问题。随着HTTP/2的多路复用和HTTP/3/QUIC协议的演进,现代Web正逐步摆脱对多连接的依赖。

小李独爱秋的博客 1013

http

http 用于从WWW服务器传输超文本到本地浏览器的传输协议。 HTTP协议和TCP协议是不冲突的,HTTP定义在七层协议中的应用层,TCP解决的是传输层的逻辑。HTTP使用TCP而不是UDP的原因在于打开一个网页必须传送很多数据,而TCP协议提供传输控制,按顺序组织数据,错误纠正等功能。(可靠传输) HTTP连接使用的是“请求—响应”的方式。在请求前要先建立连接,并且需要客户端向服务器发出请求后,服务器端才能返回响应。 http1.0: 增加post和head 只保持短暂连接,每次TCP连接只能发送

lilisiyang___的博客 1236

HTTP2

http1.1 存在的问题 容易触发浏览器 tcp 连接数限制 对于同一个域名,浏览器最多只能同时创建 6~8 个 TCP 连接 (不同浏览器不一样)。因为一个tcp连接一次承载一个请求,也就是说一个时刻最多只能发起6~8个请求,这就是上文说到的只能同时发起 6 个视频请求的问题。为了解决这个限制,行业内惯用域名分区的方案,即将资源分散到不同域名下 (比如二级子域名),这样就可以针对不同域名创建连接并请求。但多域名随之而来的是更多的 dns 查询耗时,以及更多 tcp 连接开销。 “队头阻塞”问题

lpq1201的博客 1444

浏览器原理--HTTP/3:甩掉TCP、TLS 的包袱,构建高效网络

(1)正常情况下的 TCP 传输数据过程:从一端发送给另外一端的数据会被拆分为一个个按照顺序排列的数据包,这些数据包通过网络传输到了接收端,接收端再按照顺序将这些数据包组合成原始数据,这样就完成了数据传输。(3)如果在数据传输的过程中,有一个数据因为网络故障或者其他原因而丢包了,那么整个 TCP 的连接就会处于暂停状态,需要等待丢失的数据包被重新传输过来。(丢包状态) 在 TCP 传输过程中,由于单个数据包的丢失而造成的阻塞称为 TCP 上的队头阻塞(4)TCP队头阻塞是怎么影响 HTTP/2 传输?1、H

xuan的博客 665

浏览器原理学习笔记04—浏览器中的页面事件循环系统

浏览器原理学习笔记04—浏览器中的页面事件循环系统 文章目录浏览器原理学习笔记04—浏览器中的页面事件循环系统1. 页面事件循环系统1.1 任务调度模型1.2 消息队列中的任务类型1.3 页面单线程缺点的优化2. 事件循环应用:WebAPI2.1 setTimeout2.1.1 实现方式2.1.2 一些细节2.2 XMLHttpRequest3. 宏任务和微任务3.1 宏任务(粗时间粒度)3.2 微任务3.2.1 微任务队列3.2.2 微任务的产生3.2.3 微任务的执行4. Promise4.1 Prom

禅林阆苑 483

http协议中的“队头阻塞”问题

队头阻塞”问题会导致性能下降,可以用“并发连接”和“域名分片”技术缓解。

jkzyx123的博客 1211

https,http1,http2,http3的一些知识

https,http1,http2,http3的一些知识温故知新,突然有人问我项目中🤔有使用http3么,一下不知从何说起,就有了这篇文章的出现。

caixin185的博客 1694
上一篇: go语言中的名称
下一篇: vxlan 协议原理简介
云开发者联盟
博客等级 码龄5年 546粉丝 93原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值