HTTP 协议的演变历程

HTTP 协议的演变

HTTP

HTTP/1.0

  • 缺点:每进行一次HTTP通信,都需要经历建立TCP连接、传输HTTP数据和断开TCP连接三个阶段,需要频繁的进行TCP的连接与断开管理。

HTTP/1.1

  • 针对HTTP/1.0的缺点,增加了持久连接的特性,在一个TCP连接上可以传输多个HTTP请求,只要浏览器或者服务器没有明确断开连接,那么该TCP连接会一直保持,请求头中Connection:keep-alive就表示持久连接。
  • 浏览器为每个域名最多同时维护6个TCP持久连接。
  • 请求头中增加了Host字段,提供了虚拟主机的支持。
  • 持久连接虽然能减少TCP的建立和断开次数,但是它需要等待前面的请求返回之后,才能进行下一次请求。在当前的请求没有结束之前,其他的请求只能处于阻塞状态。

HTTP/2

  • 头部压缩,可消除冗余报头字段,减少不必要的带宽占用。
  • 多路复用:引入二进制分帧层。
  • 实现资源的并行传输,可以直接将数据提前推送到浏览器。

HTTP/3

  • 基于UDP实现了类似于TCP的多路数据流、传输可靠性等功能,称为QUIC协议。

很多浏览器和Web服务器已经支持 HTTP/2,使用 HTTP/2 协议可以使得我们网站的性能得到大幅的提升。Akamai 公司建立的一个官方的演示,用以说明 HTTP/2 相比于之前的 HTTP/1.1 在性能上的大幅度提升:HTTP/2 is the future of the Web

在 Nginx 中启用 HTTP/2

要开启 HTTP/2 需要 Nginx 版本在 1.10.0 以上,且 openssl 版本在 1.0.2

我们可以分别通过命令nginx -v,openssl version进行版本查看,在最新版本的 Nginx 中,默认是支持 HTTP/2 协议的,只需要配置文件中做如下的配置即可开启。

  server {
        listen       443 ssl http2; # 表示启用 HTTP/2
        server_name  www.kangpeiqin.cn;
        ssl_certificate "/usr/cert/ssl.pem";
        ssl_certificate_key "/usr/cert/ssl.key";
        ssl_session_cache shared:SSL:1m;
        ssl_session_timeout  10m;
        ssl_prefer_server_ciphers on;
	add_header Access-Control-Allow-Origin *;
        add_header Access-Control-Allow-Headers X-Requested-With;
        add_header Access-Control-Allow-Methods GET,POST,OPTIONS;
	gzip on;
	gzip_buffers 32 4K;
	gzip_comp_level 9;
    	gzip_min_length 1k;
    	gzip_types application/javascript text/css text/xml;
        gzip_vary on;
  }

未启用HTTP/2:

启用后:

参考:

  • HTTP1、HTTP2、HTTP3
  • 《图解 HTTP》
    欢迎关注我的个人博客&公众号
    • 个人博客:https://www.kangpeiqin.cn/#/index
      在这里插入图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值