前言HTTP/2.0发布于2015年,作为新一代HTTP协议,其由于推进互联网加密技术的使用,所以只能作用于https连接当中。HTTP/2.0提供HTTP语义的有效序列化,是一个二进制协议,所有的框架开始一个8字节的头,紧跟着的0和16.383个八位位组之间的有效载荷。当然HTTP的复用性也是其一大特点,而新定义的HTTP请求与响应映射到流的新互动模式,也就是我今天要说的服务器推送。

服务器推送

HTTP/2允许服务器在请求之前先推送响应信息到客户端(之前客户端有过请求),如果实现了HTTP缓存,推送的响应信息可以在客户端被缓存(可通过no-cache进行配置)。

(注意:HTTP/2是持久连接,为了实现最佳性能,预计客户端在确定不需要与服务器进一步通信时或者服务器关闭连接时才会关闭连接,所以客户端不应该打开多个同一IP与端口的连接。)

对于HTTP/2的推送详细说明在官方文档种过于繁杂,下面将以更为简单的方式来进行说明。

普通请求

左图表示一个正常情况下的一个简单的页面请求,一个HTML页面我们要进行页面请求与页面包含的样式文件请求,如果有页面中有图片等页面文件时请求次数将会更多。

当然,我们可以通过:

这种形式来进行资源预加载,但是不同类型的代码整合已经不符合代码规则,虽然速度有所提升,但是HTTP请求次数并没有减少。

服务器推送

右图中表示通过只通过一次HTML请求,就同时把样式、图片等全部发送给浏览器,通过一次通信获得所有资源。

实现方式

Nginx实现

在nginx的conf配置文件中,添加http2_push命令,表示请求根目录"/"时,会推送这两个文件。(如果有多个文目录时需要写多个,方法繁琐,每次修改都要重启,不推荐)server {

listen 443 ssl http2;

···//省略

location / {

···//省略

http2_push /style.css;

http2_push /example.png;

}

}

Apache 实现

在httpd.conf文件中加入(不推荐,理由同上)

Header add Link "; rel=preload; as=style"

Header add Link "; rel=preload; as=image"

后端实现

通过在应用生成HTTP 回应的头信息中设置Link命令(推荐),服务器在收到包含Link的头信息时,就会进行推送,例如:Link: ; rel=preload; as=style, ; rel=preload; as=image

服务器推送方式据说可以提高8%左右的打开速度,有兴趣的朋友可以测试一下,有结果记得给我反馈一下哦。

http协议下需要服务器推送吗,HTTP/2.0 服务器推送实现相关推荐

  1. 所有服务器显示不兼容,魔兽世界6.0服务器显示不兼容怎么办 服务器显示不兼容解决方法介绍...

    今天小编为大家带来了魔兽世界6.0服务器显示不兼容怎么办 服务器显示不兼容解决方法介绍,感兴趣的朋友们可以跟着小编去下文了解一下哦! <魔兽世界>6.0版本游戏"德拉诺之王&qu ...

  2. 魔兽世界服务器排队状态app,魔兽世界服务器排队插队软件-魔兽世界7.0服务器免排队辅助预约1.2.01[预约]-乐游网游戏...

    <魔兽世界7.0服务器免排队辅助>听名字就让大家兴奋了吧,小编作为一名国服魔兽世界的玩家最期待的就是出月卡,同时最怕的也是出月卡.以前小编周末上号排队500+,现在小编周末上号排队5000 ...

  3. 魔兽8.0最新服务器人口普查,魔兽世界9.0哪个服务器人多_wow9.0服务器人口_3DM网游...

    魔兽世界9.0上线了,很多玩家准备加入守护艾泽拉斯的大军,而人口数量多的服务器虽然在版本初期会碰到排队现象,但是拍卖行的资源比较丰富,下面就给大家带来魔兽世界9.0服务器人口普查. 魔兽世界9.0服务 ...

  4. HTML5支持服务器发送事件(Server-Sent Events)-单向消息传递数据推送(C#示例)

    传统的WEB应用程序通信时的简单时序图: 现在Web App中,大都有Ajax,是这样子: HTML5有一个Server-Sent Events(SSE)功能,允许服务端推送数据到客户端.(通常叫数据 ...

  5. 运维企业专题(2)HTTP加速器——Varnish缓存机制后篇(后端服务器集群、负载均衡与CDN推送平台搭建)

    1.实验一:配置后端服务器集群 1)实验目的:定义不同域名站点的后端服务器,通过域名会访问不同的后端主机 2)实验过程: <1>在调度器server1上编写Varnish的配置文件 vim ...

  6. 前端ajax数据提交到服务器_详解前端如何让服务器主动向浏览器推送数据

    前言 前面我们已经聊了ajax,它的特点是浏览器必须先发起请求,服务器才能给出对应的响应,想一想能不能让服务器主动向浏览器推送数据呢?那么这篇文章我们来聊一聊服务器推送功能. 轮询 假设你现在需要去做 ...

  7. 怎么删除微博服务器里的个人信息,“搞垮” 微博服务器?每天上亿条用户推送是如何做到的...

    CTA峰会倒计时5天!5月25-27日,由中国IT社区CSDN与数字经济人才发展中心联合主办的第一届CTA核心技术及应用峰会将在杭州国际博览中心隆重召开,峰会将围绕人工智能领域,邀请技术领航者,与开发 ...

  8. 服务器微信推送,开启服务器消息推送后收不到微信推送的数据

    appId :wx221563f29cd20a25 在小程序的后台开启了消息推送按文档说的客服消息接入指引操作的 验证成功后未能收到微信服务器推送的post数据. 自己已经使用postman去测试了服 ...

  9. 泛微 消息服务器,第三方系统向泛微OA系统推送消息

    向泛微OA系统推送消息 以下操作案例中关于第三方系统向泛微OA系统的移动端和电脑端版本推送消息说明: •  移动端使用的是泛微系统登录账号(工号)来最终实现消息的推送 •  电脑端使用的是泛微系统用户 ...

最新文章

  1. pandas read_csv ‘utf-8‘ codec can‘t decode bytes in position 1198-1199: invalid continuation byte解决
  2. ubuntu mysql 远程连接问题解决方法
  3. 【响应式Web前端设计】Register Demo
  4. Dev-C++ v5.11
  5. jvm原理及性能调优系列(jvm调优)
  6. 在Linux中清空某个路径下的特定命名格式的文件夹
  7. python常胜将军问题_Python中最常见的10个问题(列表)
  8. Spring安全权限管理(Spring Security的配置使用)
  9. JavaScript高级编程II
  10. 计算机网络网际协议实验报告,计算机网络网际协议ip实验报告.doc
  11. win10计算机自带的游戏怎么打开方式,win10自带游戏在哪里?手把手教你打开win10自带游戏...
  12. ffmpeg 音频合并
  13. java阿波罗入门介绍_十分钟入门Apollo
  14. RH850从0搭建Autosar开发环境系列讲解 - 总目录
  15. BZOJ 4084 [Sdoi2015]双旋转字符串
  16. 什么是中文域名,注册中文域名的好处有哪些?
  17. 2011金融考博经验谈(上交安泰金融篇)【zz】
  18. pyspark 并行调用udf函数
  19. 基于Simuink的无穷大电源供电系统和同步发电机三相短路的仿真
  20. 北斗导航软件怎么下载? 1

热门文章

  1. 截至频率_截至2013年核心Java帖子
  2. forkjoin_应用ForkJoin –从最佳到快速
  3. JMetro“ Metro”选项卡,Java的TreeView和ContextMenu(JavaFX)
  4. @async方法不调用了_在Spring中使用Future对象调用Async方法调用
  5. 在扩展Spock时输出给定值
  6. java lambda使用_在Java 8 Lambda上使用Apache Commons Functor功能接口
  7. jboss as7 下载_JBoss AS 7:定制登录模块
  8. 带有Javaslang的Java 8中的功能数据结构
  9. mongodb存储数据_在MongoDB中存储分层数据
  10. 在Log4j2中更好地执行非日志记录器调用