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 提供了更快的加载速度和更好的用户体验。

相关推荐
1-programmer10 小时前
Go context 对HTTP请求的影响
开发语言·http·golang
DashVector10 小时前
如何通过HTTP API新建Collection
数据库·人工智能·http·阿里云·向量检索
总是学不会.13 小时前
第六篇:HTTP 的未来,会变成啥样?
java·网络·后端·网络协议·http·开发
何陈陈19 小时前
【Linux】HTTPS
linux·服务器·网络·网络协议·http·https·哈希算法
爱吃巧克力的程序媛1 天前
网络协议详解---TCP、HTTP、WebSocket、socket、轮询等
网络协议·tcp/ip·http
Michaelwubo1 天前
配置清晰,nignx http tcp 代理 已经websocket
websocket·网络协议·http
drebander2 天前
HTTP 1.0 与 HTTP 2.0 的区别
网络·网络协议·http
njnu@liyong2 天前
计算机网络-HTTP协议
网络协议·计算机网络·http
19999er2 天前
Https&身份鉴权(小迪网络安全笔记~
网络·笔记·网络协议·web安全·http·网络安全·https