前端最基础的就是 HTML+CSS+Javascript
。掌握了这三门技术就算入门,但也仅仅是入门,如今前端开发的定义已经远远不止这些。前端小课堂(HTML/CSS/JS
),本着提高技术水平,打牢基础知识的中心思想,咱们开课啦(每周四)。html
HTTP2 即超文本传输协议 2.0。是由互联网工程任务组(IETF)的 Hypertext Transfer Protocol Bis (httpbis)工做小组进行开发。主要是为了优化性能,前身是 Google 的 SPDY 。是兼容 HTTP1.1的
HTTP1.1 发布于 1999年。HTTP2 发布于 2015年5月前端
HTTP/2 头部压缩(HPack)nginx
Nginx 1.9.5+ 支持 HTTP2, 高版本的 Nginx 不支持 IE6 的 HTTPS(大家没看错咱们还兼容 IE6)。算法
咱们能够经过 Chrome 浏览器开发者工具的 Network 来查看当前请求使用的协议(Protocol 字段)segmentfault
只能有一个
请求/响应。能够复用
,再完成一个能够继续下一个keep-alive
来开启长连接。也就是说完成请求处理之后 HTTP 链接会维持一段时间,这样在这段时间内若是有新的请求就可以直接传输而不须要再次进行 TCP 创建链接了。多个
TCP 协议经过慢启动机制、拥塞避免机制、加速递减机制、快重传和快恢复机制来共同实现拥塞控制。服务器
新建了个域名,开启了 HTTP2微信
TCP 特性:可靠(知道接收方是否已接收)。对应 UDP(不可靠)。网络
接收方未收到时,须要有重发机制。可是若是原本就是由于接收方负载太高,那么就会形成网络拥堵、甚至致使把接收方打挂。app
这个时候 TCP 要拥有控制流量的办法。防止大量数据过来等待接收。
1988年,Van Jacobson 和 Michael J.Karels 撰文描述了解决问题的几种算法:慢启动、拥塞预防、快速重发和快速恢复。这几种算法被写进了 TCP 规范。
当网络的负载超过了能处理的极限时,就会形成网络拥塞。
TCP 经过动态维护窗口的大小实现以最大负载来传输数据。有两种问题,网络问题,接收方问题。
发送方维护两个窗口:准许窗口(接收方容许的最大字节数)和拥塞窗口(Congestion Window) (发送方传递的字节数量)。最终发送的字节数量是两个窗口的最小值。
当链接建好时,发送方将拥塞窗口初始化为1,而后开始发送数据段。
若是数据段在定时器过时以前被确认,则将拥塞窗口的字节数翻倍(由于是翻倍,因此拥塞窗口会呈指数级增加,直到超时不被确认或者达到接收方窗口限制)。
若是数据段在定时器过时以前没有被确认,则认为网络拥塞。这个时候发送的字节数会减半(阈值也会变化),这个时候还有个阈值的逻辑。
这个算法被称为慢启动算法 ( Slow Start)
当 拥塞窗口 < 阈值 时,使用慢启动算法
当 拥塞窗口 > 阈值 时,使用拥塞避免算法
当 拥塞窗口 = 阈值时,既可使用慢启动算法,也可时使用拥塞避免算法。
拥塞避免算法的思路是让拥塞窗口缓慢地增大,呈线性增加,即每完成一次,拥塞窗口增长1。