热门标签 | 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演示文稿(您可以在此处观看解释多路复用效果的演示).


推荐阅读
  • 本文介绍了 Go 语言中的高性能、可扩展、轻量级 Web 框架 Echo。Echo 框架简单易用,仅需几行代码即可启动一个高性能 HTTP 服务。 ... [详细]
  • Cookie学习小结
    Cookie学习小结 ... [详细]
  • 本文详细介绍了 HTML 中 a 标签的 href 属性的多种用法,包括实现超链接、锚点以及调用 JavaScript 方法。通过具体的示例和解释,帮助开发者更好地理解和应用这些技术。 ... [详细]
  • 如果应用程序经常播放密集、急促而又短暂的音效(如游戏音效)那么使用MediaPlayer显得有些不太适合了。因为MediaPlayer存在如下缺点:1)延时时间较长,且资源占用率高 ... [详细]
  • 网络爬虫的规范与限制
    本文探讨了网络爬虫引发的问题及其解决方案,重点介绍了Robots协议的作用和使用方法,旨在为网络爬虫的合理使用提供指导。 ... [详细]
  • 本文深入探讨了Java多线程环境下的同步机制及其应用,重点介绍了`synchronized`关键字的使用方法和原理。`synchronized`关键字主要用于确保多个线程在访问共享资源时的互斥性和原子性。通过具体示例,如在一个类中使用`synchronized`修饰方法,展示了如何实现线程安全的代码块。此外,文章还讨论了`ReentrantLock`等其他同步工具的优缺点,并提供了实际应用场景中的最佳实践。 ... [详细]
  • 本文介绍了Java编程语言的基础知识,包括其历史背景、主要特性以及如何安装和配置JDK。此外,还详细讲解了如何编写和运行第一个Java程序,并简要介绍了Eclipse集成开发环境的安装和使用。 ... [详细]
  • 本文详细介绍了如何使用JavaScript实现面部交换功能,包括基本原理和具体实现步骤。 ... [详细]
  • python模块之正则
    re模块可以读懂你写的正则表达式根据你写的表达式去执行任务用re去操作正则正则表达式使用一些规则来检测一些字符串是否符合个人要求,从一段字符串中找到符合要求的内容。在 ... [详细]
  • malloc 是 C 语言中的一个标准库函数,全称为 memory allocation,即动态内存分配。它用于在程序运行时申请一块指定大小的连续内存区域,并返回该区域的起始地址。当无法预先确定内存的具体位置时,可以通过 malloc 动态分配内存。 ... [详细]
  • 本文介绍了多种开源数据库及其核心数据结构和算法,包括MySQL的B+树、MVCC和WAL,MongoDB的tokuDB和cola,boltDB的追加仅树和mmap,levelDB的LSM树,以及内存缓存中的一致性哈希。 ... [详细]
  • Python多线程详解与示例
    本文介绍了Python中的多线程编程,包括僵尸进程和孤儿进程的概念,并提供了具体的代码示例。同时,详细解释了0号进程和1号进程在系统中的作用。 ... [详细]
  • 本文将介绍如何在混合开发(Hybrid)应用中实现Native与HTML5的交互,包括基本概念、学习目标以及具体的实现步骤。 ... [详细]
  • 字符串学习时间:1.5W(“W”周,下同)知识点checkliststrlen()函数的返回值是什么类型的?字 ... [详细]
  • 开机自启动的几种方式
    0x01快速自启动目录快速启动目录自启动方式源于Windows中的一个目录,这个目录一般叫启动或者Startup。位于该目录下的PE文件会在开机后进行自启动 ... [详细]
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社区 版权所有