一文了解阿里云CDN HTTP2.0

简介: 本文由阿里视频云高级技术专家空见撰写,主要介绍HTTP2.0的历史、特性、如何使用和使用之后的性能对比验证。

背景介绍

要了解HTTP2.0,先了解一下HTTP超文本传输协议的历史(HyperText Transfer Protocol),这是为了实现互联网上内容传输提出的协议,其历史伴随着互联网的发展。整个HTTP协议发展历程如下:
image

一句话介绍:
HTTP 0.9:基于GET请求的文本传输协议
HTTPS:安全的HTTP传输协议
HTTP 1.0:增加HTTP头、扩展PUT、POST等方法
HTTP 1.1:长连接、流水线支持,最广泛使用的HTTP传输协议
SPDY:针对HTTP的增强,工作在SSL层之上、HTTP层之下
HTTP 2.0:安全高效的下一代HTTP传输协议

根据W3Techs统计,到现在为止,互联网上前1000万的网站,已经有27.9%支持了HTTP2.0。

HTTP2.0的特性

内容安全(Security),因为HTTP2.0是基于HTTPS的,天然具有安全特性,通过HTTP2.0的特性可以避免单纯使用HTTPS的性能下降。
二进制格式(Binary Support),HTTP1.x的解析是基于文本。HTTP 2.0将所有的传输信息分割为更小的消息和帧,并对它们采用二进制格式编码,基于二进制可以让协议有更多的扩展性,比如引入了帧来传输数据和指令。

多路复用(MultiPlexing),这个功能相当于是长连接的增强,每个request可以随机的混杂在一起,接收方可以根据request的id将request再归属到各自不同的服务端请求里面。另外多路复用中,也支持了流的优先级(Stream dependencies),允许客户端告诉server哪些内容是更优先级的资源,可以优先传输。

image

Header压缩(Header compression),HTTP请求中header带有大量信息,而且每次都要重复发送,HTTP2.0使用编解码来header的传输,通讯双方各自cache一份header fields表,减少header的开销。

服务端推送(Server push),同SPDY一样,HTTP2.0也具有server push功能。目前,有大多数网站已经启用HTTP2.0,如淘宝 利用chrome控制台可以查看是否启用HTTP2.0:chrome://net-internals/#http2 可以看到当前页面使用HTTP2.0的情况:

image

如何使用HTTP2.0

目前阿里云CDN已经全面支持HTTP2.0,大部分主流浏览器也已经支持该功能,但是需要服务端改造后才能使用,不过如果你使用了阿里云CDN,源站即便不支持也能够享受HTTP2.0的特性,目前在官网可以自助开启:

1、 开启HTTPS证书 因为HTTP2.0是依赖于HTTPS的,在控制台开启HTTP2.0需要提前开启HTTPS,目前阿里云CDN已经支持免费证书功能,提前打开该功能即可:
image

2、 开启HTTP2.0功能:
image

性能对比验证

目前我们提供了一个对比测试工具,可以比较直观的看出来HTTP1.1和HTTP2.0的加载页面的差异,针对180个小图片,HTTP2.0显示了强大的优势:
image

小伙伴也可以通过下面页面,自己体验本地使用HTTP2.0和HTTP1.1的对比效果:
https://http2.cdnpe.com/index.html

HTTP2.0和SPDY的关系

SPDY是Google提出的用来解决老的HTTP协议不足的一些新的方案,可以说是综合了HTTPS和HTTP两者优点并加以改进的传输协议。实践证明SPDY解决了HTTP的一些顽疾,在性能上提升显著,最终IETF(Internet Enginerring Task Force)正式考虑制定HTTP2.0的计划,最后决定以SPDY为基础起草HTTP2.0,SPDY的部分设计人员也被邀请参与了HTTP2.0的设计。

Google的测试表明,页面加载时间相比于HTTP1.x减少了64%:
image

参考

HTTP0.9:https://www.w3.org/Protocols/HTTP/AsImplemented.html
HTTP1.0:https://tools.ietf.org/html/rfc1945
HTTP1.1:https://tools.ietf.org/html/rfc2616
HTTP2.0:https://tools.ietf.org/html/rfc7540
Wiki:https://en.wikipedia.org/wiki/HTTP/2
Golang http2:http://http2.golang.org/gophertiles
Learning HTTP/2: A Practical Guide for Beginners

活动推荐

【TechDay】阿里云CDN Tengine开源技术沙龙-上海站,将在8月29日下午阿里虹桥中心展开,多位专家现场探讨CDN QUIC、TLSv1.3、直播、Tengine实践等话题,参与活动即可赢取阿里云定制礼品,点击了解活动详情与报名:https://yq.aliyun.com/event/359

目录
相关文章
|
10天前
|
边缘计算 安全 算法
阿里云CDN:构建全球化智能加速网络的数字高速公路
阿里云CDN构建全球化智能加速网络,拥有2800多个边缘节点覆盖67个国家,实现毫秒级网络延迟。其三级节点拓扑结构与智能路由系统,结合流量预测模型,确保高命中率。全栈式加速技术包括QUIC协议优化和Brotli压缩算法,保障安全与性能。五层防御机制有效抵御攻击,行业解决方案涵盖视频、物联网及游戏等领域,支持新兴AR/VR与元宇宙需求,持续推动数字内容分发技术边界。
47 13
|
11天前
|
CDN
阿里云CDN价格表:不知道CDN怎么收费?新手秒懂百科
阿里云CDN收费包括基础费用和增值费用。基础费用提供三种计费方式:按流量、带宽峰值及月结95带宽峰值, 默认按流量计费,价格因地区和用量而异;用户也可购买流量资源包抵扣费用。增值服务如HTTPS、QUIC、WAF及实时日志等按需收费,不使用则不收费。阿小云整理了2025年最新标准,详情参见阿里云官网。
|
15天前
|
CDN
阿里云CDN怎么收费?看这一篇就够了,CDN不同计费模式收费价格全解析
阿里云CDN收费包含基础费用与增值费用。基础费用提供三种计费模式:按流量、带宽峰值及月结95带宽峰值计费,默认按流量计费,价格因地域和用量阶梯而异。增值费用涵盖静态HTTPS、QUIC请求、WAF防护及实时日志等服务,按需使用并单独计费。此外,可通过购买资源包预付费降低整体成本。更多详情参见阿里云官方文档。
145 8
|
1月前
|
缓存 边缘计算 安全
阿里云CDN:全球加速网络的实践创新与价值解析
在数字化浪潮下,用户体验成为企业竞争力的核心。阿里云CDN凭借技术创新与全球化布局,提供高效稳定的加速解决方案。其三层优化体系(智能调度、缓存策略、安全防护)确保低延迟和高命中率,覆盖2800+全球节点,支持电商、教育、游戏等行业,帮助企业节省带宽成本,提升加载速度和安全性。未来,阿里云CDN将继续引领内容分发的行业标准。
127 7
|
2月前
|
开发者 CDN
阿里云CDN边缘脚本示例实现/?p123重定向/p/123.html
本文介绍了如何通过EdgeScript实现URL重定向,将`http://www.example.com/?p123`重定向到`http://www.example.com/p/123.html`。使用捕获请求URI中的参数并进行重写,具体代码和内置变量参考阿里云CDN开发者文档。示例代码展示了关键的实现步骤。
50 8
|
1月前
|
存储 文件存储 对象存储
课时4:阿里云云存储(OSSTableStoreNAS)+CDN产品:更快速度,更低成本
阿里云云存储(OSS、TableStore、NAS)结合CDN,提供高效、低成本的海量数据存储与加速服务。基于飞天操作系统,具备近乎无限的存储空间、99%可用性和多个九的数据持久性,支持多种数据类型和应用场景。CDN覆盖全球500+节点,确保毫秒级访问速度,助力企业应对大数据时代的挑战,提升用户体验。
|
3月前
|
CDN
阿里云CDN收费标准,不同计费模式价格表(基础服务费和增值服务费用整理)
阿里云CDN的计费包括基础费用和增值费用。基础费用有三种计费方式:按流量、带宽峰值和月结95带宽峰值,默认按流量计费。增值服务如HTTPS、QUIC、WAF和实时日志等,使用才收费。详细价格和规则请参考阿里云官网。
344 12
|
Web App开发
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html><head><meta http-equiv="Cont
TCP洪水攻击(SYN Flood)的诊断和处理 Posted by  海涛  on 2013 年 7 月 11 日 Tweet1 ​1. SYN Flood介绍 前段时间网站被攻击多次,其中最猛烈的就是TCP洪水攻击,即SYN Flood。
1038 0
|
SQL Web App开发 前端开发
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html><head><meta http-equiv="Cont
在运行一个group by的sql时,抛出以下错误信息: Task with the most failures(4):  -----Task ID:  task_201411191723_723592_m_000004URL:  http://DDS0204.
1021 0
|
Web App开发 前端开发 Java
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html><head><meta http-equiv="Cont
线程的状态有:new、runnable、running、waiting、timed_waiting、blocked、dead 当执行new Thread(Runnabler)后,新创建出来的线程处于new状态,这种线程不可能执行 当执行thread.start()后,线程处于runnable状态,这种情况下只要得到CPU,就可以开始执行了。
767 0