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

前言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的推送详细说明在官方文档种过于繁杂,下面将以更为简单的方式来进行说明。

8a9ec5655c9cb9abee367e346cbd3cac.png

普通请求

左图表示一个正常情况下的一个简单的页面请求,一个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://www.mzph.cn/news/338020.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C语言最常用的编译器

点击上方蓝字关注我,了解更多咨询对于大部分工科类专业的学生来说,如果说是需要学习c语言的话,那选择编译器就是我们第一个遇到的问题了,这一类软件有很多,每一个软件都有他各自的优点,当然了也有他各自的缺…

word一键生成ppt 分页_如何一键把Word转换为PPT?

看到评论区有人问可以一键转换吗?当然可以,比如简单好用的【迅捷PDF转换器】迅捷PDF转换器 - 多功能的PDF转换成Word|JPG|PPT转换器安装打开软件之后,在PDF转换栏目下,点击PDF转换其它,就可以看到文件格式转PPT&#x…

jboss4 迁移_JBoss BPM Travel Agency的微服务迁移故事

jboss4 迁移不久前,我们启动了一个规模较大的JBoss Travel Agency演示项目,以展示JBoss BPM Suite的一些更有趣的功能。 我们提供了一系列视频 ,不仅向您展示了如何安装它,项目中各种规则和流程工件的含义,还向您介绍…

windows系统c 实现ftp服务器,windows系统c 实现ftp服务器

windows系统c 实现ftp服务器 内容精选换一换弹性云服务器卸载磁盘。弹性云服务器状态为stopped时支持系统盘(也就是/dev/sda挂载点)和用户盘的卸载,没有操作系统限制,也不需要在弹性云服务器内部安装vmtools。弹性云服务器状态为active态时有如下约束限制…

怎么学好C语言数据结构?

点击上方蓝字关注我,了解更多咨询C语言的数据结构与算法,难就难在链表,学会了链表,可能后面就一点都不难了。书籍推荐《数据结构与算法分析—C语言描述版》,要深入学习的话可以选择这本书,因为针对链表的讲…

c# 去除转义符号_c#语法

一、.net面向对象什么是面向对象?1、面向对象编程英文 Object-Oriented Programming 简称 OOP2、面向过程——是指把问题分解成步骤,一步一步实现。面向对象——是把构成问题的事务分成各个对象,利用对象之间的关系来解决问题,面向…

win7系统如何访问xp系统的服务器,WIN7系统怎么让XP系统访问呢

WIN7系统怎么让XP系统访问呢如果你发现某些程序出现兼容性问题,你有以下4种选择:1) XP兼容模式。右击程序文件或开始菜单中的快捷方式,选择属性,点击兼容性选项,在下拉菜单中选择在XP环境下运行。2) 升级到最新版本&am…

C语言基础知识储备,给你送干货啦!

点击上方蓝字关注我,了解更多咨询C 语言的特点C 语言程序设计就是结构化程序设计,它的主要观点是采用自顶向下、逐步细分和模块化的程序设计方法,使用顺序、选择、循环三种基本控制结构来构造程序。世间万物都有两面性,C 语言既有…

dalsa工业相机8k参数_工业传感器再掀巨浪 | Teledyne 以80亿美元收购FLIR,互补性产品组合又增体量...

收购 / Acquisitions2021年1月4日,Teledyne和FLIR联合宣布,双方已经达成了一项最终协议,Teledyne将以价值约80亿美元的现金和股票交易收购FLIR。根据协议条款,FLIR股东将以每股FLIR股份的价格获得每股28美元的现金和0.0718股Tele…

配置多个git账号_docker随手笔记第七节 jenkins通过git部署java微服务插件安装

docker随手笔记第一节 docker概念及安装docker随手笔记第二节 docker常用命令解析docker随手笔记第三节 docker构建java镜像docker随手笔记第四节 docker安装mysql5.7docker随手笔记第五节 docker安装redis4.0jenkins部署git的java微服务需要如下插件SSH plugin (远程登陆到服务…

适合新手入门—嵌入式C语言

点击上方蓝字关注我,了解更多咨询你现在被数百种电子设备包围着,虽然这些设备表面看起来很简单,但它们的体内都运行着复杂的微处理器(或微控制器)。微处理器的功能由嵌入式系统软件控制、引导和监督。嵌入式软件和嵌入式硬件构成了一个嵌入式…

如何学习C语言数据结构?

点击上方蓝字关注我,了解更多咨询C语言的数据结构与算法,难就难在链表,学会了链表,可能后面就一点都不难了。书籍推荐《数据结构与算法分析—C语言描述版》,要深入学习的话可以选择这本书,因为针对链表的讲…

数组做参数_C语言进阶之路:函数—数组参数!

数组参数属于指针参数.指针参数即时传址参数(或叫引用参数), 如果想在函数中修改参数的值, 这是唯一的途径.如果把数组当作参数, 不管你愿意与否, 它就是指针, 指向第一个值的指针.1. 数组参数就是指向第一个元素的指针:2. 干脆直接声明为指针:3. 即使你在形参中指定维数也不起…

wso2 esb_使用WSO2 ESB进行邮件内容过滤

wso2 esb每个集成设计师或开发人员都应该熟悉Gregor Hohpe和Bobby Woolf所描述的企业集成模式(EIP) 。 模式之一是“内容消息过滤器” (不要与消息过滤器模式混淆)。 使用不同的Mediator在WSO2中有多种方法可以实现此目的。 一种…

c语言中的/和%表示什么意思

点击上方蓝字关注我,了解更多咨询%代表求余运算符号;/代表除法运算符号。1、求余是一种数学计算方法,指一个数除以另一个数,不够除的部分就是余数,就是求余的结果。一个数除以另一个数,要是比另一个数小的话…

vue 脚手架测试环境_关于单元测试脚手架的几点思考

vue 脚手架测试环境莱昂:Luc Besson的专业人士 当我开始通过创建相同的对象并准备用于运行测试的数据来重复进行单元测试方法时,我对设计感到失望。 带有大量代码重复的长测试方法看起来并不正确。 为了简化和缩短它们,基本上有两个选择&…

Lightly:新一代的C语言IDE

点击上方蓝字关注我,了解更多咨询C语言最初是作为Unix系统的开发工具而发明,现如今已成为最广泛使用、最流行的编程语言之一。它具有如下几个特点:(1)低级语言它是一种建立在底层构建逻辑的机器语言,可以直…

c语言程序的基本单位是什么呢?

点击上方蓝字关注我,了解更多咨询随着科技的不断发展,电脑等终端设备已经成为我们生活中不可或缺的工具,而希望学习程序设计语言的朋友也越来越多,那么c语言的基本单位是什么呢?其实,c语言的基本单位是函数…

关于C语言中的memset()函数你了解多少

点击上方蓝字关注我,了解更多咨询1.函数原型及功能memset()函数原型为:函数功能:将_Dst所指区域的前size_t个字节均初始化为_val,调用时需要引用string.h头文件memset()函数多用于数组和结构体这种占用内存比较大的数据结构的初始…

如何判断无法到达目标的拼图_拼图项目的动机和目标

如何判断无法到达目标的拼图几周前,我写了一篇关于Jigsaw项目可能如何破坏现有代码的文章 。 那么我们得到什么回报呢? 让我们看一下项目解决的痛点及其在Java 9中解决问题的目标。 系列 这篇文章是正在进行的有关拼图项目系列的一部分。 按照推荐的顺序…