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

相关推荐
hie9889437 分钟前
HTTP常见的请求方法、响应状态码、接口规范介绍
http
一曝十寒3 小时前
那些常见的 HTTP 状态码
前端·http
酷爱码7 小时前
在 Linux 中修改 Apache HTTP Server(httpd)默认端口的完整指南
linux·http·apache
程序员祥云7 小时前
https相比http的区别
网络协议·http·https
小吕学编程10 小时前
HttpServletRequest常用方法
java·http
2501_9151063210 小时前
Flutter、React Native 项目如何搞定 iOS 上架?从构建 IPA 到上传 App Store 的实战流程全解析
websocket·网络协议·tcp/ip·http·网络安全·https·udp
snetlogon2012 小时前
JDK17 Http Request 异步处理 源码刨析
android·网络协议·http
秋水丶秋水15 小时前
SSL安全证书怎么安装?
网络协议·http·https
midsummer_woo1 天前
【2025年】解决Burpsuite抓不到https包的问题
网络协议·http·https
猫头虎1 天前
[特殊字符]解决 “IDEA 登录失败。不支持早于 14.0 的 GitLab 版本” 问题的几种方法
java·ide·网络协议·http·https·gitlab·intellij-idea