热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

为什么HTTP/2多路复用优于http/1.1?

如何解决《为什么HTTP/2多路复用优于http/1.1?》经验,为你挑选了1个好方法。

在HTTP/1.1案例中,一个网页有多个资源,每个文件将创建一个到服务器端的连接来检索数据,js,css等.我认为工作模式类似于多进程或多线程,工作并行.

但是在HTTP/2 Case中,每个域在网页中只有一个连接,即使它可以处理来自客户端浏览器的多个请求,也许它类似于单个线程.

我不知道为什么http/2的性能比http/1.1更好?



1> sbordet..:

HTTP/2多路复用比HTTP/1.1对网页更有效的原因与打开TCP连接的成本几乎没有关系.

在HTTP/1.1中,浏览器通常每个域最多打开6个连接.在这些连接打开后,它们会一直打开并一遍又一遍地重复使用,直到它们闲置为止.

然而,即使打开这些连接之后,HTTP/2也比HTTP/1.1快,因此显然不是这里开放TCP连接的成本.

今天的典型网页可能有多达100个资源要从源服务器下载.让我们保持简单,假设客户端和服务器之间有200毫秒的往返.为了在HTTP/1.1下载页面,浏览器必须下载主HTML页面(1个往返),然后解析HTML页面并安排下载100个资源 - 但它只有6个连接.所以浏览器发送前6个请求,然后等待它们返回(1个往返); 然后另外6个请求,然后等待他们回来(1往返); 在这个简单的模型中,要下载100个资源,浏览器需要1 + 17往返,每个200毫秒,这意味着3.6秒.

在HTTP/2中,浏览器发出对HTML页面的请求,但是由于HTTP/2被多路复用,因此可以自由地对100个资源进行所有请求而无需等待.在这个简单的模型中,要下载100个资源,浏览器需要1 + 1往返,即400毫秒,下载时间加速10倍.

现在,事情并不像上面描述的那么简单,但由于多路复用仍然会产生相当大的影响.

您可以通过在线观看示例(此处和此处)来自己查看此影响,并且您可以观看关于此和其他HTTP/2优势的HTTP/2演示文稿(您可以在此处观看解释多路复用效果的演示).


推荐阅读
  • 本文探讨了如何利用SqlDependency执行复杂的SQL查询,并确保在多线程环境下的安全性与效率。 ... [详细]
  • EasyMock实战指南
    本文介绍了如何使用EasyMock进行单元测试,特别是当测试对象的合作者依赖于外部资源或尚未实现时。通过具体的示例,展示了EasyMock在模拟对象行为方面的强大功能。 ... [详细]
  • 本文深入探讨了JavaScript中实现继承的四种常见方法,包括原型链继承、构造函数继承、组合继承和寄生组合继承。对于正在学习或从事Web前端开发的技术人员来说,理解这些继承模式对于提高代码质量和维护性至关重要。 ... [详细]
  • 微信小程序中实现位置获取的全面指南
    本文详细介绍了如何在微信小程序中实现地理位置的获取,包括通过微信官方API和腾讯地图API两种方式。文中不仅涵盖了必要的准备工作,如申请开发者密钥、下载并配置SDK等,还提供了处理用户授权及位置信息获取的具体代码示例。 ... [详细]
  • 本文详细介绍了在使用Socket进行网络编程时,遇到链接器错误`undefined reference to WSAStartup@8`的解决方案,适用于多种开发环境。 ... [详细]
  • 本文探讨了Web开发与游戏开发之间的主要区别,旨在帮助开发者更好地理解两种开发领域的特性和需求。文章基于作者的实际经验和网络资料整理而成。 ... [详细]
  • 本文将详细介绍如何在ThinkPHP6框架中实现多数据库的部署,包括读写分离的策略,以及如何通过负载均衡和MySQL同步技术优化数据库性能。 ... [详细]
  • 如何恢复CAD中意外丢失的图纸数据
    当使用CAD进行绘图时,因突然断电或其他原因导致计算机关闭可能会造成工作数据的丢失。然而,通过利用CAD软件的自动保存功能,用户通常能够恢复至最近一次自动保存的数据状态。 ... [详细]
  • 在使用Maven进行项目构建时,由于依赖库的下载速度慢常常让人感到沮丧,这直接影响了开发效率和学习热情。幸运的是,阿里云提供了一个快速的国内镜像服务,能够显著提升Maven项目的构建速度。 ... [详细]
  • JavaWeb技术架构解析
    本文探讨了JavaWeb开发中客户端与服务器端的交互模式,重点分析了B/S(浏览器/服务器)和C/S(客户端/服务器)两种架构的特点及应用场景。 ... [详细]
  • Java与JSON互转:实现JSON到Java对象及Java对象到JSON的转换
    本文详细介绍了如何在Java中实现JSON数据与Java对象之间的相互转换,包括代码示例和常见问题解决方法。 ... [详细]
  • 推荐两款实用的网络诊断工具
    大家好,因为一些私事很久没有更新博客了。今天向大家介绍两款非常有用的网络诊断工具——Tracert和Telnet,帮助你更好地理解和解决网络问题。 ... [详细]
  • 在Linux系统上构建Web服务器的详细步骤
    本文详细介绍了如何在Linux系统上搭建Web服务器的过程,包括安装Apache、PHP和MySQL等关键组件,以及遇到的一些常见问题及其解决方案。 ... [详细]
  • 本文探讨了如何通过WebBrowser控件在用户点击输入框时自动显示图片验证码。该过程可能涉及JavaScript事件的触发与响应。 ... [详细]
  • 使用LVS与ldirectord实现高可用负载均衡
    本文介绍了如何通过LVS(Linux Virtual Server)结合ldirectord工具来实现服务器的健康检查及负载均衡功能。环境设置包括一个LVS节点和两个真实服务器节点,通过配置ldirectord进行健康状态监测,确保系统的高可用性。 ... [详细]
author-avatar
被爱的超萌baby
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有