For investors
股价:
5.36 美元 %For investors
股价:
5.36 美元 %认真做教育 专心促就业
随着互联网的不断发展,web前端编程开发也成为一个热门的求职岗位类型,而本文我们就通过案例分析来简单了解一下,web前端程序员需要掌握哪些知识点。
1、二进制分帧层
二进制分帧层是HTTP/2.0性能增强的关键,它改变了通信两端交互数据的方式,原先都是以文本传输。
现在要先对数据进行二进制编码,再把数据分成一个一个的帧,接着把帧送到数据流中,后对方接收帧并拼成一条消息,再处理请求。
在2.0版本中,通信的小单位是帧(frame),若干个帧组成一条消息(message),若干条消息在数据流(stream)中传输。
一个TCP连接可以分出若干条数据流,因此HTTP/2.0只要建立一次TCP连接就能完成所有传输。
2、多路通信
通信两端对请求或响应的处理都是串行的,也就是按顺序一个个处理。
虽然在HTTP/1.1中新增了管道化的概念,让客户端能一下发送多个请求,减少了不必要的网络延迟。
不过那只是将请求的队列顺序迁移到服务器中,服务器处理还是得按顺序来,所以本质上响应还是串行的。
如果一定要实现并行通信,那么必须建立多条TCP连接,多个请求分别在不同的TCP通道中传输,间接实现并行通信。
TCP是一种可靠的通信协议,中途如果出现丢包,发送方就会根据重发机制再发一次丢失的包。
由于通信两端都是串行处理请求的,所以接收端在等待这个包到达之前,不会再处理后面的请求,这种现象称为队阻塞。
HTTP/2.0不但解决了队阻塞问题,还将TCP建立次数降低到只要1次。
通信两端只需将消息分解为独立的帧,然后在多条数据流中乱序发送。
后在接收端把帧重新组合成消息,并且各条消息的组合互不干扰,这就实现了真正意义上地并行通信,达到了多路复用的效果。
在CSS中,为了减少请求次数,会把很多小图拼在一起,做成一张大的雪碧图,现在借助多路通信后,不用再大费周章的制图了,直接发请求即可。
3、请求优先级
客户端对请求资源的迫切度都是不同的,例如在浏览器的网页(即HTML文档)中,像CSS、JavaScript这些文件传得越快越好,而像图像则可以稍后再传。
在HTTP/1.1中,只能是谁先请求,谁就先处理,不能显式的标记请求优先级。
而在HTTP/2.0中,每条数据流都有一个31位的优先值,值越小优先级越大(0的优先级高)。
有了这个优先值,相当于能随时建立一条绿色通道,通信两端可以对不同数据流中的帧采取不同策略,这样能更好的分配有限的带宽资源。
4、部压缩
HTTP是无状态的,为了准确的描述每次通信,通常都会携带大量的部,例如Connection、Accept或Cookie。
而这些部每次会消耗上百甚至上千字节的带宽。为了降低这些开销,HTTP/2.0会先用HPACK算法压缩部,然后再进行传输。
5、服务器推送
HTTP/2.0支持服务器主动推送,简单的说就是一次请求返回多个响应,服务器无法获知推送的资源是否在客户端缓存中,若存在,则用于推送资源的带宽就会被浪费。
服务端要支持推送,需要额外的开发和配置成本,这就有可能让三方服务器(例如CDN节点)无法进行推送。
【免责声明】本文系本网编辑部分转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与管理员联系,我们会予以更改或删除相关文章,以保证您的权益!更多内容请加danei456学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。