http1.1 vs http2.0 速度对比实测

首先对比一下http1.1 vs http2.0 区别:

1. 连接管理:

  • HTTP/1.1 :
    • 每个请求/响应都需要一个独立的 TCP 连接,虽然可以使用持久连接(keep-alive)来复用连接,但仍然存在请求队头阻塞(Head-of-Line Blocking)的问题。
  • HTTP/2.0 :
    • 允许多个请求和响应在同一个连接上并行传输,使用流(streams)来区分不同的请求,避免了队头阻塞问题。

2. 数据格式:

  • HTTP/1.1 :
    • 使用文本格式进行数据传输,所有的头部信息都是明文的,解析效率较低。
  • HTTP/2.0 :
    • 使用二进制格式进行数据传输,效率更高,减少了数据传输的开销。

3. 头部压缩:

  • HTTP/1.1 :
    • 头部信息未经过压缩,导致在大量请求时,头部数据可能占用较大带宽。
  • HTTP/2.0 :
    • 采用 HPACK 头部压缩算法,减少了头部数据的大小,提高了传输效率。

4. 优先级和流控制:

  • HTTP/1.1 :
    • 不支持请求优先级,所有请求都按顺序处理。
  • HTTP/2.0 :
    • 支持请求优先级和流控制,可以根据需求调整请求的处理顺序,提高资源利用率。

代码实测:

项目地址: https://github.com/jackywq/http1.1vshttp2.0

首先clone一下项目,然后在nginx上配置http1.1 和 http2.0两个server,在nginx.conf配置如下代码:

bash 复制代码
server {
        # https
        listen 441 ssl; 
        server_name  127.0.0.1;

        # 各自电脑的ssl证书地址可能不一样,自己调整下
        ssl_certificate /usr/local/etc/nginx/ssl-cert.pem;
        ssl_certificate_key /usr/local/etc/nginx/ssl-key.pem;

        add_header Cache-Control no-store;

        location / {
            # 各自电脑的静态html地址不一样,自己调整下
            root   /Users/wangquan/http-hello/http1-vs-http2/static; 
            index  index.html index.htm;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }

    server {
        # https
        listen 442 ssl; 
        http2 on;
        server_name  127.0.0.1;

        ssl_certificate /usr/local/etc/nginx/ssl-cert.pem;
        ssl_certificate_key /usr/local/etc/nginx/ssl-key.pem;

        add_header Cache-Control no-store;

        location / {
            root   /Users/wangquan/http-hello/http1-vs-http2/static; 
            index  index.html index.htm;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }

使用nginx -t 测试下,测试成功后执行 nginx -s reload;

使用浏览器分别打开 https://127.0.0.1:441/https://127.0.0.1:442/

以下在无延迟和网络延迟100ms的网络环境下,分别测试http1.1和http2.0页面渲染总耗时;

无延迟:http1.1和http2.0渲染时长差别不大

网络延迟100ms: http2.0比http1.1速度快了3倍;

总结:

HTTP/2.0 相比 HTTP/1.1 在性能和效率上有显著提升,特别是在处理大量请求和高延迟网络环境中。通过并行处理、头部压缩和服务器推送等特性,HTTP/2.0 提供了更快的加载速度和更好的用户体验。

相关推荐
ControlRookie14 小时前
第04篇_把 HTTP 放进 PLC:扫描周期、缓冲区、状态机和能力边界
http·codesys·plc通信
記億揺晃着的那天16 小时前
HTTPS 页面内网直连 NAS:解决 Mixed Content 与公网带宽瓶颈
网络协议·http·https·nas
GitLqr1 天前
别再盲目复制了:彻底搞懂 CORS 的本质与那些“神坑”
安全·http·面试
IPdodo_2 天前
Codex 一直显示 Thinking 怎么办?区分任务运行、界面卡住与会话恢复
http·网络调试
Kina_C2 天前
Apache HTTP Server 安装、配置与高级功能详解
linux·http·apache
chexus2 天前
21. 深入 Nginx HTTP 缓存源码:CDN功能
nginx·http·缓存
张小姐的猫2 天前
【Linux】网络编程 —— HTTP协议(上)
linux·运维·服务器·网络·http·单例模式·策略模式
2501_916007473 天前
深入理解HTTPS对称与非对称加密机制及Charles抓包实践
网络协议·http·ios·小程序·https·uni-app·iphone
2501_916008893 天前
HTTPS 抓包遇到证书绑定怎么办,使用 TraceEagle 解除 App 证书校验
网络协议·计算机网络·http·网络安全·ios·adb·https
猫头_4 天前
AI 流式传输工程指南:有了 EventSource 为何还要 Fetch?
javascript·http·llm