HTTP/1.1 队头堵塞问题

文章目录

一、队头堵塞

1、非管线化

如图,http 请求必须等到上一个请求响应后才能发送,后面的以此类推,由此可以看出,在一个 tcp 通道中,如果某个 http 请求的响应因为某种原因没能及时返回,那后面的请求都会被阻塞

2、管线化

管线化限制服务器端需按照请求的发送顺序返回响应,如果其中某个响应因为某种原因延迟了几秒,那后面的响应都会被阻塞

HTTP/1.1 管线化解决了请求的队头阻塞,但没有解决响应的队头阻塞

二、如何解决?

HTTP/1.1 建议客户端使用并发长连接,RFC2616 明确限制每个客户端对同一个域名可以建立两个长连接,但是一般浏览器会增加到 6 ~ 8 个,其中,谷歌浏览器是 6 个,也就是页面中如果对同一个域名有多个 http 请求,谷歌浏览器会对这个域名建立 6 个 tcp 长连接,在每个长连接里面再去处理 http 请求,但是这种方案对服务器的挑战非常大,甚至有些 web 优化方案中还会突破 6 ~ 8 的限制,那就是域名切片,因为长连接针对的是同一个域名,如果开发人员将资源分布在不同的域名上,那么长连接的数量是可以被突破的,但这样做无疑会增大服务器的连接数,当服务器面对海量请求的话,可能会出现问题,那怎么办呢?HTTP/2.0

相关推荐
z人间防沉迷k13 小时前
HTTP/2概览及内核解析
网络·网络协议·http·https
是代码侠呀13 小时前
HTTP 的发展史:从前端视角看网络协议的演进
前端·网络协议·http·开源·github·github star·github 加星
贺函不是涵13 小时前
【沉浸式求职学习day35】【Tomcat安装、配置】【Http简述】
学习·http·tomcat
麓殇⊙17 小时前
Servlet--快速入门及HTTP概述
网络协议·http·servlet
z人间防沉迷k21 小时前
HTTP/3展望、我应该迁移到HTTP/2吗
网络·笔记·网络协议·http·https
无名之逆1 天前
Hyperlane: Unleash the Power of Rust for High-Performance Web Services
java·开发语言·前端·后端·http·rust·web
秦jh_1 天前
【Linux网络】应用层协议HTTP
linux·运维·服务器·网络·网络协议·tcp/ip·http
测试工程喵2 天前
Bearer Token的神秘面纱:深入解析HTTP认证头的设计哲学
网络·功能测试·网络协议·http·接口测试·模块测试·登录认证
JAVA学习通2 天前
[JAVAEE]HTTP协议(2.0)
网络·网络协议·http
在成都搬砖的鸭鸭2 天前
【Go底层】http标准库服务端实现原理
开发语言·http·golang