文 - 篇  访客 -

华为云CDN加速开启HTTP2


  分类:04 技术开发  / 
更新:2023-08-14 09:49:10  /  创建:2023-08-04 16:06:48
不要删除

项目使用华为云存储OBS虽然讲网站静态文件单独存储在OBS上了,但发现图片的相关加载速度依然很慢。
查了一下对应的协议,发现用的还是HTTP/1.1的协议。
800

其实HTTPS下的使用HTTP/2的协议加载速度会更快,配置也很简单华为云控制台修改一下就行。测试了一下。

HTTP2的协议速度相比http1提升了很多。

HTTP/2介绍

背景信息

HTTP/2作为新一代超文本传输协议,具有有效减少TCP握手时延、报文头部传输量、提升传输效率等优点。http://url只能使用HTTP1.x版本协议,https://url支持HTTP/2版本的使用。

配置约束

已成功配置HTTPS证书,详见HTTPS证书配置

协议优势

目前,互联网使用的HTTP协议版本是HTTP1.1,HTTP/2在HTTP1.1的基础上对性能进行了很大的优化,并且兼容了HTTP1.1的语义。

HTTP/2和HTTP1.1比较主要有如下几大优势:

  • 二进制分帧

    HTTP/2采用二进制格式传输数据,而HTTP1.1采用文本格式传输数据。二进制格式传输在协议的解析和优化扩展上更具优势,提升了数据传输效率。

  • 头部压缩

    HTTP/2对消息头采用HPACK格式进行压缩传输,并在客户端和服务端通过“头部表”来跟踪和存储消息头,相同的消息头只需通过索引从“头部表”中获取并使用之前已经请求发送过的消息头。

    HTTP/2通过头部压缩, 解决了HTTP1.1每次请求都会携带大量的头部冗余信息而浪费带宽资源的问题,节省了消息头占用的网络和流量。

  • 多路复用

    在HTTP/2中,多个请求或者响应可以通过一个TCP连接并发完成,而HTTP1.1中每个请求或者响应都需要按照先后顺序建立一个TCP链接。HTTP/2通过有效地并发请求,减少了服务器链接压力,缓解了网络阻塞状况。

HTTP2的缺点

  1. TCP 以及 TCP+TLS建立连接的延时,HTTP/2使用TCP协议来传输的,而如果使用HTTPS的话,还需要使用TLS协议进行安全传输,而使用TLS也需要一个握手过程,在传输数据之前,导致我们需要花掉 3~4 个 RTT。
  2. TCP的队头阻塞并没有彻底解决。在HTTP/2中,多个请求是跑在一个TCP管道中的。但当HTTP/2出现丢包时,整个 TCP 都要开始等待重传,那么就会阻塞该TCP连接中的所有请求。

HTTP3

Google 在推SPDY的时候就已经意识到了这些问题,于是就另起炉灶搞了一个基于 UDP 协议的“QUIC”协议,让HTTP跑在QUIC上而不是TCP上。主要特性如下:

  • 实现了类似TCP的流量控制、传输可靠性的功能。虽然UDP不提供可靠性的传输,但QUIC在UDP的基础之上增加了一层来保证数据可靠性传输。它提供了数据包重传、拥塞控制以及其他一些TCP中存在的特性
  • 实现了快速握手功能。由于QUIC是基于UDP的,所以QUIC可以实现使用0-RTT或者1-RTT来建立连接,这意味着QUIC可以用最快的速度来发送和接收数据。
  • 集成了TLS加密功能。目前QUIC使用的是TLS1.3,相较于早期版本TLS1.3有更多的优点,其中最重要的一点是减少了握手所花费的RTT个数。
  • 多路复用,彻底解决TCP中队头阻塞的问题。

华为云的配置步骤

  1. 登录华为云控制台,在控制台首页中选择“CDN与智能边缘 > CDN”,进入CDN控制台。
  2. 在左侧菜单栏中,选择“域名管理”。
  3. 在域名列表中,单击需要修改的域名或域名所在行的“设置”,进入域名配置页面。
  4. 选择“HTTPS配置”页签。
  5. 在HTTP/2模块,开启状态开关,完成配置。

800

升级Nginx1.9.5以上版本,开启博客网站http2.0时代 - 腾讯云开发者社区-腾讯云 (tencent.com)

阿里云提供了一个测试地址。
HTTP/1.1 与 HTTP/2 下载小文件速度对比 (cdnpe.com)


不要删除

是日已过,命亦随减,如少水魚,斯有何乐?