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

相关推荐
司徒小夜8 小时前
HTTP与HTTPS杂谈-HTTPS防御了什么
网络·http·https
一只游鱼12 小时前
利用keytool实现https协议(生成自签名证书)
网络协议·http·https·keytool
码熔burning14 小时前
RPC 和 HTTP 的区别
网络协议·http·rpc
吐个泡泡v16 小时前
网络编程基础:一文搞懂 Socket、HTTP、HTTPS、TCP/IP、SSL 的关系
网络·网络协议·http·https·socket·ssl·tcp
liulilittle17 小时前
HTTP简易客户端实现
开发语言·网络·c++·网络协议·http·编程语言
摸着石头过河的石头21 小时前
HTTP内容类型:从基础到实战的全方位解析
前端·http·浏览器
堕落年代1 天前
Spring Boot HTTP状态码详解
spring boot·后端·http
noravinsc2 天前
RPC和HTTP的区别?
网络协议·http·rpc
melonbo2 天前
c++工程如何提供http服务接口
c++·http
川石课堂软件测试2 天前
Oracle 数据库:视图与索引
数据库·网络协议·nginx·http·oracle·grafana·prometheus