HTTP 1.1发明以来发生了哪些变化
1.从几KB大小的消息,到几MB大小的消息
2.每个页面小于10个资源,到每页面100多个资源
3.从文本为主的内容,到富媒体(如图片,声音,视频)为主的内容
4.对页面内容实时性高要求的应用越俩越多
HTTP 1.1的高延迟问题
高延迟带来页面加载速度的降低
1.随着带宽的增加,延迟并没有显著下降
2.并发连接有限
3.同一连接同时只能在完成一个HTTP事务(请求/响应)才能处理下一个事务
高延迟VS高带宽
单连接上的串行请求
无状态导致的高传输量(低网络效率)
无状态特性带来的巨大HTTP头部
重复传输的体积巨大的http头部
特别是cookie
HTTP 1.1为了解决性能问题做过的努力
1.Spriting 合并多张小图为一张大图供浏览器JS切割使用
缺点:不能区别对待,一张小图的更改,整个大图需要重新传输
2.Inlining内联:将图片嵌入到CSS或者HTML文件中,减少网络请求次数
3.Concatenation拼接:将多个体积较小的js使用webpack等工具打包成1个体积更大的js文件
缺点:1个文件的改动导致用户重新下载多个文件
4.Sharding分片:将同一页面的资源分散到不同域名下,提升连接上限
HTTP 1.1不支持服务器推送消息
HTTP2 特性
SPDY(2012-2016 google)
HTTP2 (RFC7540 2015.5)
1.在应用层上修改,基于并充分挖掘TCP协议性能
2.客户端向server发送request这种基本模型不会变
3.老的scheme不会变,没有http2://
4.使用http 1.x的客户端和服务器可以无缝的通过代理方式转接到http 2.x上
5.不识别http 2的代理服务器可以将请求降级到http1.x
主要特性
传输数据量的大幅减少
1.以二进制方式传输
2.标头压缩
多路复用及相关功能
消息优先级
服务器的消息推送
HTTP2是不是必须基于TLS/SSL协议
1.IETF标准不要求必须基于TLS/SSL协议
2.浏览器要求必须基于TLS/SSL协议
(1).希望网络安全
(2).利用现有的TLS握手
3.在TLS层ALPN扩展做协商,只认HTTP 1.x的代理服务器不会干扰HTTP 2
4.schema: http://和https://默认基于80和443端口
5.h2:基于TLS协议运行的http 2被称为h2
6.h2c:直接在tcp协议之上运行的http 2被称为h2c
h2与h2c的区别
h2c:不使用TLS协议进行协议升级
客户端测试工具:curl (7.46.0版本及以上支持http 2)
curl http://nghttp/2.org -http/2 -v