GHOST系统之家 - Windows系统光盘下载网站!
当前位置:GHOST系统之家>系统问题 > 聊聊 HTTP 管线化

聊聊 HTTP 管线化

来源:Ghost系统之家浏览:时间:2023-04-11 09:10:44

聊聊 HTTP 管线化

作者:前端餐厅 2023-03-27 08:49:51网络 网络管理 HTTP 管线化同时依赖于客户端和服务器的支持。遵守 HTTP/1.1 的服务器支持管线化。这并不是意味着服务器需要提供管线化的回复,而只是要求在收到管线化的请求时候不会失败。

​HTTP管线化 (HTTP pipelining )是将多个HTTP请求(request)整批送出的技术,而在传送过程中不需先等待服务器的回应。

请求结果管线化使得 HTML 网页载入时间动态提升,特别是在具体有高延迟的连接环境下,如卫星上网。在宽带连接中,加速不是那么显著的,因为需要伺服器端应用 HTTP/1.1 协议,同时伺服器端必须按照客户端的请求顺序回复请求,这样整个连接还是先进先出的, 队头阻塞(HOL blocking)可能会发生,造成延迟。未来的 HTTP/2.0 或者SPDY中的异步操作将会解决这个问题。因为它可能将多个 HTTP 请求填充在一个TCP数据包内,HTTP 管线化需要在网络上传输较少的 TCP 数据包,减少了网络负载。

管线化机制须透过永久连线(persistent connection)完成,并且只有 GET 和 HEAD 等要求可以进行管线化,非幂等的方法,例如POST将不会被管线化。连续的 GET 和 HEAD 请求总可以管线化的。一个连续的幂等请求,如 GET,HEAD,PUT,DELETE,是否可以被管线化取决于一连串请求是否依赖于其他的。此外,初次建立连线时也不应启动管线机制,因为对方(伺服器)不一定支援 HTTP/1.1 版本的协定。

HTTP 管线化同时依赖于客户端和服务器的支持。遵守 HTTP/1.1 的服务器支持管线化。这并不是意味着服务器需要提供管线化的回复,而只是要求在收到管线化的请求时候不会失败。

什么是http管道化

通常,http请求总是顺序发送的,下一个请求只有在当前请求的响应被完全接受的时候才会被发送。由于网络延迟和带宽的限制,这样会导致在服务器发送下一个响应的时候中间有很大的延迟。

HTTP/1.1允许多个http请求通过一个套接字同时被输出 ,而不用等待相应的响应。然后请求者就会等待各自的响应,这些响应是按照之前请求的顺序依次到达。(me:所有请求保持一个FIFO的队列,一个请求发送完之后,不必等待这个请求的响应被接受到,下一个请求就可以被再次发出;同时,服务器端返回这些请求的响应时也是按照FIFO的顺序)。管道化的表现可以大大提高页面加载的速度,尤其是在高延迟连接中。

管道化同样也可以减少tcp/ip的数据包。通常MSS的大小是在536-1460字节,所以将许多个http请求放在一个tcp/ip包 里也是有可能的。减少加载一个网页所需数据包的数量可以在整体上对网络有益处,因为数据包越少,路由器和网络带来的负担就越少。

HTTP/1.1需要服务器也支持管道化。但这并不意味着服务器需要管道化响应,而是当客户端发出管道化请求时,服务器不会响应失败。This obviously has the potential to introduce a new category of evangelism bugs(不会翻。。),因为仅有现代浏览器支持管道化。

什么时候我们应该管道化请求

只有幂等的请求(见注1)才可以被管道化,比如GET和HEAD。POST和PUT不应该被管道化。我们同样也不应该在建立新连接的时候发出管道化的请求 ,因为不能确源服务或代理是否支持HTTP/1.1。因此,管道化只能利用已存在的keep-alive连接。

多少个请求应该被管道化

如果连接过早的关闭,管道化许多请求是划不来的,因为我们会花费很多时间用来向网络里写请求,然后还不得不在新连接中重写一遍。而且,如果较早到达的请求需要花费很长的时间完成,一个过长的管道实际上会让用户感知到更长的延迟。HTTP/1.1标准也没有提供关于管道化请求理想数目的任何指导。实际上,我们建议每个服务器不超过2个keep-alive连接。显然,这个还得依赖于应用本身。鉴于上述的原因,浏览器可能不需要一个持续时间特别长的管道。2个可能是比较合适的值,但是还有待测试。

如果一个请求被取消了,会发生什么?

如果一请求被取消了,是不是意味着整个管道都被取消了呢?或者,是不是意味着这个被取消请求的响应应该被简单的丢弃,以便这个管道中的其他请求不会被强制重发?这个答案依赖于很多因素,包括,这个被取消请求的响应还有多少没有被收到。最原始的办法可能是简单的取消管道,然后重发所有的请求。仅仅当请求是幂等的时候才可以。这样原始的方法也可以产生好的影响,因为正在管道中被发送的请求可能属于同一个正在被取消的页面载入组。

如果连接失败会发生什么?

如果连接失败了或服务器在下载一个管道中的响应时中断了,浏览器必须有能力重新开始发送被丢失的请求。这种情况可以等同于上面讨论的被取消的例子。

HTTP/方法的幂等性:是指一次和多次请求某一个资源应该具有同样的副作用。幂等性的请求,实际上就是多次操作都不会改变结果的请求,比如GET,我可以多次从同一个地方获取资源,但是对于资源本身来说并不会发生什么变化,我GET10次和GET100次,资源都没有发生任何变化。而post则不同了,我提交表单10次,和100次,造成的结果是不同的,至少数据库里新增的数据有不同。

解释

其实HTTP管道化就是将客户端的FIFO队列移到了服务端。在客户端可以依次发送所有要发送的请求(当然这些请求是在同一个域下的),一个请求发送完之后,不必等待这个请求的响应被接受到,下一个请求就可以被再次发出。在服务器端维持的FIFO队列,这个队列是按照资源的重要程度排列的。比如HTML比CSS要先返回,JS,CSS比图片先返回。在服务器端会有一个缓冲区,来存放那些已经被处理好了但是还没轮到被发送的响应。比如服务器先后收到了A,B两个请求,A资源比B资源优先级要高,处理A需要10ms,处理B需要1ms,假设服务器可以并行处理请求,那么B的响应肯定是最先处理好了的,但是B响应不能先发出去,必须待在缓冲区里,等待A响应处理好了之后,先把A的响应发出去,B的响应才能够被发出去。因为服务端必须要遵循FIFO这个原则。HTTP管道化不是HTTP2的内容,是对HTTP1.1协议下,服务器不能很好处理并行请求的一个改进。管道化的有序和TCP的有序是本质上的不同,管道化的有序,是消息与消息之间的有序。TCP中的有序,组成一个消息的多个报文段之间的有序。打个不太恰当的比方,就好比是A同学吃午餐和B同学吃午餐哪个先吃完饭可以去玩电脑一样,假设是A同学先进食堂,B同学再进食堂,他俩的吃饭速度相同,那么按照FIFO原则,不论是A同学是吃了苹果,梨,米饭,菜,还是B同学只吃了苹果和米饭。虽然B同学是先吃完,他吃的少,但是在管道化中,也还一定是A同学先去玩电脑,B同学跟着。而在TCP中,就好像是在形容,这顿饭,A同学是先吃了苹果,梨,米饭,菜还是先吃了菜,米饭,梨,这样的内部顺序。管道做了哪些事,我的理解是创造了一个可以不用等待前一个请求的响应即可发送下一个请求的场所。至于注意些什么,除了知道有些设备不支持,其他的我也没实际经验

文章出自:​​前端餐厅​​,如有转载本文请联系前端餐厅ReTech今日头条号。

github:​​https://github.com/zuopf769​​

责任编辑:武晓燕 来源:今日头条 HTTP管线化服务器

推荐系统

  • 微软Win11原版22H2下载_Win11GHOST 免 激活密钥 22H2正式版64位免费下载

    微软Win11原版22H2下载_Win11GHOST 免 激活密钥 22H2正式版64位免费下载

    语言:中文版系统大小:5.13GB系统类型:Win11

    微软Win11原版22H2下载_Win11GHOST 免 激活密钥 22H2正式版64位免费下载系统在家用办公上跑分表现都是非常优秀,完美的兼容各种硬件和软件,运行环境安全可靠稳定。Win11 64位 Office办公版(免费)优化  1、保留 Edge浏览器。  2、隐藏“操作中心”托盘图标。  3、保留常用组件(微软商店,计算器,图片查看器等)。  5、关闭天气资讯。 

  • Win11 21H2 官方正式版下载_Win11 21H2最新系统免激活下载

    Win11 21H2 官方正式版下载_Win11 21H2最新系统免激活下载

    语言:中文版系统大小:4.75GB系统类型:Win11

    Ghost Win11 21H2是微软在系统方面技术积累雄厚深耕多年,Ghost Win11 21H2系统在家用办公上跑分表现都是非常优秀,完美的兼容各种硬件和软件,运行环境安全可靠稳定。Ghost Win11 21H2是微软最新发布的KB5019961补丁升级而来的最新版的21H2系统,以Windows 11 21H2 22000 1219 专业版为基础进行优化,保持原汁原味,系统流畅稳定,保留常用组件

  • windows11中文版镜像 微软win11正式版简体中文GHOST ISO镜像64位系统下载

    windows11中文版镜像 微软win11正式版简体中文GHOST ISO镜像64位系统下载

    语言:中文版系统大小:5.31GB系统类型:Win11

    windows11中文版镜像 微软win11正式版简体中文GHOST ISO镜像64位系统下载,微软win11发布快大半年了,其中做了很多次补丁和修复一些BUG,比之前的版本有一些功能上的调整,目前已经升级到最新版本的镜像系统,并且优化了自动激活,永久使用。windows11中文版镜像国内镜像下载地址微软windows11正式版镜像 介绍:1、对函数算法进行了一定程度的简化和优化

  • 微软windows11正式版GHOST ISO镜像 win11下载 国内最新版渠道下载

    微软windows11正式版GHOST ISO镜像 win11下载 国内最新版渠道下载

    语言:中文版系统大小:5.31GB系统类型:Win11

    微软windows11正式版GHOST ISO镜像 win11下载 国内最新版渠道下载,微软2022年正式推出了win11系统,很多人迫不及待的要体验,本站提供了最新版的微软Windows11正式版系统下载,微软windows11正式版镜像 是一款功能超级强大的装机系统,是微软方面全新推出的装机系统,这款系统可以通过pe直接的完成安装,对此系统感兴趣,想要使用的用户们就快来下载

  • 微软windows11系统下载 微软原版 Ghost win11 X64 正式版ISO镜像文件

    微软windows11系统下载 微软原版 Ghost win11 X64 正式版ISO镜像文件

    语言:中文版系统大小:0MB系统类型:Win11

    微软Ghost win11 正式版镜像文件是一款由微软方面推出的优秀全新装机系统,这款系统的新功能非常多,用户们能够在这里体验到最富有人性化的设计等,且全新的柔软界面,看起来非常的舒服~微软Ghost win11 正式版镜像文件介绍:1、与各种硬件设备兼容。 更好地完成用户安装并有效地使用。2、稳定使用蓝屏,系统不再兼容,更能享受无缝的系统服务。3、为

  • 雨林木风Windows11专业版 Ghost Win11官方正式版 (22H2) 系统下载

    雨林木风Windows11专业版 Ghost Win11官方正式版 (22H2) 系统下载

    语言:中文版系统大小:4.75GB系统类型:

    雨林木风Windows11专业版 Ghost Win11官方正式版 (22H2) 系统下载在系统方面技术积累雄厚深耕多年,打造了国内重装系统行业的雨林木风品牌,其系统口碑得到许多人认可,积累了广大的用户群体,雨林木风是一款稳定流畅的系统,一直以来都以用户为中心,是由雨林木风团队推出的Windows11国内镜像版,基于国内用户的习惯,做了系统性能的优化,采用了新的系统

  • 雨林木风win7旗舰版系统下载 win7 32位旗舰版 GHOST 免激活镜像ISO

    雨林木风win7旗舰版系统下载 win7 32位旗舰版 GHOST 免激活镜像ISO

    语言:中文版系统大小:5.91GB系统类型:Win7

    雨林木风win7旗舰版系统下载 win7 32位旗舰版 GHOST 免激活镜像ISO在系统方面技术积累雄厚深耕多年,加固了系统安全策略,雨林木风win7旗舰版系统在家用办公上跑分表现都是非常优秀,完美的兼容各种硬件和软件,运行环境安全可靠稳定。win7 32位旗舰装机版 v2019 05能够帮助用户们进行系统的一键安装、快速装机等,系统中的内容全面,能够为广大用户

  • 番茄花园Ghost Win7 x64 SP1稳定装机版2022年7月(64位) 高速下载

    番茄花园Ghost Win7 x64 SP1稳定装机版2022年7月(64位) 高速下载

    语言:中文版系统大小:3.91GB系统类型:Win7

    欢迎使用 番茄花园 Ghost Win7 x64 SP1 2022.07 极速装机版 专业装机版具有更安全、更稳定、更人性化等特点。集成最常用的装机软件,集成最全面的硬件驱动,精心挑选的系统维护工具,加上独有人性化的设计。是电脑城、个人、公司快速装机之首选!拥有此系统