新年新技术: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。

官方文档
上述内容都是官方文档的内容,深入了解最好方式还是看官方的文档。
新年新技术:HTTP/2的更多相关文章
- 新年新技术:MongoDB 3.0
前一篇介绍了HTTP/2,这一篇简单介绍下3月3号发布的MongoDB 3.0. What’s new in MongoDB 3.0? 新的存储引擎WiredTiger MongoDB 3.0的存储引 ...
- 新年之际,盘点一些APP开发技巧
(原文:Reader Submissions - New Year's 2015 作者:Mattt Thompson 译者:培子 校对:蓝魂) 回顾过去一年发生在我们身边的事情时,有一点不得不提:对苹 ...
- 新技术≠颠覆:CIO 要有战略耐心
新技术≠颠覆:CIO 要有战略耐心 大数据,云时代,互联网思维, 物联网--最近一两年,这些字眼一次次地出现在各种大大小小的CIO会议上和他们的私下交流圈子里,作为对新技术最敏感的人群,一方面他们迫切 ...
- 新思想、新技术、新架构——更好更快的开发现代ASP.NET应用程序
在博客园学习很长时间了,今天终于自己也开通了博客,准备分享一些感悟和经验.首先感谢博客园园主提供了这么好的程序员学习交流平台,也非常感谢张善友.dax.net.netfocus.司徒正美 等技术大牛的 ...
- 新年抢红包效果(New Year Red Packet)
新年抢红包效果(New Year Red Packet) 晓娜的文章(微信公众号:migufe) 2016即将过去,我们将迎来新的一年2017,这里小编提前祝大家新年快乐!万事如意!那我们新年最开心的 ...
- 华为5G空口新技术(2015年)
2015-03-24 长江后浪推前浪,4G建设方兴未艾,业界关于5G的讨论已如火如荼.对于每一代移动通信,空口技术都相当于王冠上的明珠. 在月初的世界移动通信大会上,华为发布了面向5G的新空口,并展出 ...
- 【UOJ#67】新年的毒瘤 Tarjan 割点
#67. 新年的毒瘤 UOJ直接黏贴会炸... 还是戳这里吧: http://uoj.ac/problem/67#tab-statement Solution 看到这题的标签就进来看了一眼. 想 ...
- Android 2016新技术
Android 2016新技术 版权声明:本文为博主原创文章,未经博主允许不得转载. 2016你需要了解Android有以下新兴的技术与框架,有些也许还不成熟,但是你应该去了解下,也许就是未来的方向. ...
- <转>iOS9 Day-by-Day:iOS开发者必须了解的iOS 9新技术与API
iOS9 Day-by-Day是作者Chris Grant新开的一个系列博客,覆盖了iOS开发者必须知道的关于iOS 9的新技术与API,并且还进行了实际操作演练,每篇文章中相关的代码Chris都会将 ...
随机推荐
- centos7 建立虚拟目录
一.安装mysql,直接用yum安装即可,mysql在centos7.0版本中被mariadb替代了. 命令: yum install mysql-server mysql 安装好了,选择修改mysq ...
- Redis 学习笔记
1 Redis优势 性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s . 丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes ...
- .bash_profile for mac‘ envionment variables
A typical install of OS X won't create a .bash_profile for you. When you want to run functions from ...
- 启动和关闭ADB服务(adb start-server和adb kill-server)
1 Android SDK中的常用命令行工具 在<Android SDK安装目录>\tools目录中带了很多命令行工具.虽然一般的开发人员并不需要完全掌握这些工具的使用方法,但了解这些工 ...
- java Base64算法的使用
Base64是常见的网络加密算法,Base64编码可用于在HTTP环境下传递较长的标识信息.详见 Base64介绍 1 自定义的base64算法 Base64Encrypt.java public c ...
- BZOJ2152:聪聪可可
传送门 点分治常规题.练习模板 //OJ 2077 //by Cydiater //2016.9.23 #include <iostream> #include <cstdio> ...
- POJ1426 Find The Multiple (宽搜思想)
Find The Multiple Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 24768 Accepted: 102 ...
- mybatis的分页插件使用方法
1.下载所需要的jar包,如果使用maven可以在maven中添加依赖: 插件的实现原理: 如果你想使用本项目的jar包而不是直接引入类,你可以在这里下载各个版本的jar包(点击Download下的j ...
- Yocto开发笔记之《驱动调试-华为3G模块》(QQ交流群:519230208)
QQ群:519230208,为避免广告骚扰,申请时请注明 “开发者” 字样 ======================================================== 参考:ht ...
- php返回json数据中文显示的问题
PHP5.4版本,已经给Json新增了一个选项: JSON_UNESCAPED_UNICODE.加上这个选项后,就不会自动把中文编码了. echo json_encode("厦门" ...