zoukankan      html  css  js  c++  java
  • 新年新技术:HTTP/2

    新的一年,项目也要带着发展的眼光往前走,得跟上潮流,当然前提是自己真的用的上。 用的上用不上都得先简单了解下。

    2月下旬Google发布了首个基于HTTP/2的RPC框架GRPC,它是基于HTTP/2的,所以先了解下它,后续等深入研究了再回头说说GRPC。

    What’s new in HTTP/2?

    is binary, instead of textual

    HTTP/2基于二进制而不是文本,二进制协议解析起来效率会更高,而且不那么容易出错,此外原来基于HTTP/1.x协议程序可以用多种方式解析消息体, 但是HTTP/2只有一种方式,这点对实现者来说负担更轻点。

    is fully multiplexed, instead of ordered and blocking

    HTTP/1.x实际上是一个请求一个连接,因此浏览器为了提高页面的加载速度都会开多个连接,但是这也是有限制的(不同的浏览器不一样)。 太多的连接带来的是互联网上更多的拥塞和占用了更多的资源,这本身是低效而且是不公平的(对其他协议来说)。

    HTTP/2的一个重要目的是让浏览器和服务器之间只建立一个连接,用一个连接实现了并行的请求处理,这就是multiplexing。

    因为基于二进制所以telnet无法使用HTTP/2。

    can therefore use one connection for parallelism

    上面已经提到了,HTTP/2只允许浏览器和服务器之间建立一个连接,用一个连接实现并行,减少TCP连接数。

    uses header compression to reduce overhead

    现在网页加载是资源密集型的,一个页面通常有很多资源要加载,每次请求的头部数据不可忽视(尤其是Cookies), 加上TCP的Slow Start机制(一种拥塞控制机制)会导致往返次数加大。压缩可以有效的减少包分组的数量,从而减少延迟,尤其是在移动端上。

    因为GZIP压缩有安全性隐患,所以HTTP/2自己实现了一套压缩算法——HPACK。

    allows servers to “push” responses proactively into client caches

    目前服务器需要浏览器解析页面后再发送新请求来获取js,css,图片等资源。HTTP/2为了优化这个开销,可以提前将这些资源“推送”到客户端的缓存中。

    目前HTTP/2的使用情况?

    Github上专门有一个Wiki页跟踪了有哪些HTTP/2的实现。我们比较关心的是Google发布的GRPC。

    http2-impl.png

    官方文档

    上述内容都是官方文档的内容,深入了解最好方式还是看官方的文档。

    HTTP/2

  • 相关阅读:
    org.hibernate.NonUniqueObjectException 原因及解决办法
    Hibernate方法save、update、merge、saveOrUpdate及get和load的区别
    Hibernate实体对象的生命周期(三种状态)
    Java I/O 全面详解
    故障检测、性能调优与Java类加载机制
    Linux基本命令+Makefile
    Redhat9.0+Apache1.3.29+Mysql3.23.58+PHP4.3.4
    u盘安装Linux系统详细教程
    Linux下软件常见安装方式
    Spring MVC 小计
  • 原文地址:https://www.cnblogs.com/zhanjindong/p/new-technique-in-new-year-HTTP2.html
Copyright © 2011-2022 走看看