HTTP1.1升级HTTP2.0

HTTP1.1升级HTTP2.0

一,前言介绍
1.为什么要升级http2.0

HTTP2.0相比于HTTP1.x有以下几个优点:

  1. 二进制分帧:HTTP2.0将所有传输的信息分割为更小的消息和帧,并采用二进制格式对它们进行编码,这样可以更好地对数据进行压缩和解压缩,提高传输效率。

  2. 多路复用:HTTP2.0可以在一个连接上同时传输多个请求和响应,而HTTP1.x需要多个连接才能实现并发传输,这样可以减少TCP连接的数量,提高性能。

  3. 首部压缩:HTTP2.0使用HPACK算法对首部进行压缩,减少了首部的大小,提高了传输效率。

  4. 服务器推送:HTTP2.0支持服务器主动向客户端推送资源,减少了客户端的请求次数,提高了性能。

因此,升级到HTTP2.0可以提高网站的性能和用户体验,减少页面加载时间,提高响应速度。

2.安全性能对比

HTTP/2.0 相比 HTTP/1.1 在安全性和性能方面都有很大的改进。在安全性方面,HTTP/2.0 强制使用加密传输,即使是非敏感数据也会被加密,这样可以防止中间人攻击和窃听。在性能方面,HTTP/2.0 引入了多路复用技术,可以在同一个连接上同时传输多个请求和响应,避免了 HTTP/1.1 中的队头阻塞问题,从而提高了页面加载速度。此外,HTTP/2.0 还使用了头部压缩技术,减少了传输的数据量,进一步提高了性能。

下面是一个演示 HTTP/1.1 和 HTTP/2.0 性能对比的例子:

假设有一个网站,其中包含 10 个小图片和 1 个大图片,总共大小为 1MB。我们使用 Chrome 浏览器的开发者工具来模拟加载这个网站,并记录加载时间。

在 HTTP/1.1 中,浏览器会建立 6 个连接来加载这些资源,其中 1 个连接用于加载 HTML,另外 5 个连接用于加载图片。由于 HTTP/1.1 中的队头阻塞问题,每个连接只能同时传输一个请求和响应,因此加载时间较长。

在 HTTP/2.0 中,浏览器只需要建立一个连接来加载所有资源,使用多路复用技术可以同时传输多个请求和响应,因此加载时间更短。

根据测试结果,使用 HTTP/2.0 加载这个网站的时间比使用 HTTP/1.1 加载快了 40% 左右

3.版本要求

HTTP/2.0 是一种网络协议,它的实现与 JDK 版本和 Tomcat 版本有关。下面是一些常见的要求:

对于 JDK 版本:

  • JDK 9 及更高版本支持 HTTP/2.0 协议。

  • JDK 8 不直接支持 HTTP/2.0,但可以通过使用第三方库(如 Jetty 或 Netty)来实现支持。

对于 Tomcat 版本:

  • Tomcat 9.x 支持 HTTP/2.0。

  • Tomcat 8.x 不直接支持 HTTP/2.0,但可以通过使用适当的配置和插件来实现支持。

二,实践
1.命令

这个命令在resources下执行

keytool -genkey -alias tomcat -keyalg RSA -keystore keystore.jks -validity 365 -keysize 2048

会生成这个文件放入到resources资源目录下

2.yml

yml文件配置编写

3.配置类

此配置类是用来解决升级之后带来的免更改代码

/*** http强制跳转https*/
@Configuration
public class HttpProtocolConversionConfig {
​
​@Value("${server.port}")private Integer httpsPort;@Beanpublic ServletWebServerFactory servletContainer() {TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory() {@Overrideprotected void postProcessContext(Context context) {// 如果要强制使用https,请松开以下注释// SecurityConstraint constraint = new SecurityConstraint();// constraint.setUserConstraint("CONFIDENTIAL");// SecurityCollection collection = new SecurityCollection();// collection.addPattern("/*");// constraint.addCollection(collection);// context.addConstraint(constraint);}};tomcat.addAdditionalTomcatConnectors(createStandardConnector()); // 添加httpreturn tomcat;}
​// 配置httpprivate Connector createStandardConnector() {// 默认协议为org.apache.coyote.http11.Http11NioProtocolConnector connector = new Connector(TomcatServletWebServerFactory.DEFAULT_PROTOCOL);connector.setSecure(false);connector.setScheme("http");// 这个我就不用解释了connector.setPort(80);connector.setRedirectPort(httpsPort); // 当http重定向到https时的https端口号return connector;}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/153021.shtml

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

相关文章

【Rust】快速教程——模块mod与跨文件

前言 道尊:没有办法,你的法力已经消失,我的法力所剩无几,除非咱们重新修行,在这个世界里取得更多法力之后,或许有办法下降。——《拔魔》 \;\\\;\\\; 目录 前言跨文件mod多文件mod 跨文件mod //my_mod.rs…

单机版-redis(手动部署)

单机版-redis部署 部署模式:单机版-redis部署 Redis版本:redis-4.0.1 部署redis方式:手动部署 解决GCC问题 linux升级gcc版本详细教程_gcc升级-CSDN博客 在完成第三步时已完成配置,后续为操作命令以及注意事项; 在进行操作数…

【数据结构】——双链表(增删查改)

目录 前言: 一:双链表的定义 ​编辑 二:双向链表的实现 2.1:链表的构造 2.2:创建头节点 2.3:创建节点 2.4:链表的尾插 2.5:链表的打印 2.6:链表的尾删 2.7&a…

[计算机网络]网络层概述

呼,写了这么久终于重新开始啦! 自己落下了太多东西了.....是时候应该重新拾掇起来了. 关于后面的代码项目,我的想法是vilas.js仍然使用js来进行编写,但是后续其他的项目会开始尝试使用ts来进行书写了. 就算是前端也需要点规范吧..... 0.写在前面 这篇文章要和大家道个歉,首…

2023年中职“网络安全“—Linux系统渗透提权③

2023年中职"网络安全"—Linux系统渗透提权③ Linux系统渗透提权任务环境说明:1. 使用渗透机对服务器信息收集,并将服务器中SSH服务端口号作为flag提交;2. 使用渗透机对服务器信息收集,并将服务器中主机名称作为flag提交…

​软考-高级-系统架构设计师教程(清华第2版)【第13章 层次式架构设计理论与实践(P466~495)-思维导图】​

软考-高级-系统架构设计师教程(清华第2版)【第13章 层次式架构设计理论与实践(P466~495)-思维导图】 课本里章节里所有蓝色字体的思维导图

Figma 插件学习(一)

一.插件介绍 插件在文件中运行,执行一个或多个用户操作,并允许用户自定义其体验或创建更高效的工作流程。 插件通过专用插件API与Figma的编辑器交互。还可以利用外部Web API。 1.插件API 插件API支持读写功能,允许查看、创建和修改文件的…

打破传统束缚,释放服务潜能:本地生活服务商聚合系统引领行业新风向!

本地生活服务商聚合系统是一种集合多平台、多项目的创新型服务系统,它打破了传统服务商系统的一对一限制,为创业者和运营商带来了诸多优势。小多将深入探讨本地生活服务商聚合系统的优势。 随着互联网的快速发展,本地生活服务也迎来了蓬勃的发…

el-tree 与table表格联动

html部分 <div class"org-left"><el-input v-model"filterText" placeholder"" size"default" /><el-tree ref"treeRef" class"filter-tree" :data"treeData" :props"defaultProp…

彻底删除的文件如何恢复?分享正确方法!

“求救&#xff01;我在清理电脑的过程中&#xff0c;把一些比较久远的文件彻底删除了。但是我突然想起好像有些非常重要的数据也一同被删掉了&#xff0c;这可怎么办&#xff1f;有方法恢复彻底删除的文件么&#xff1f;” 在日常使用电脑的过程中&#xff0c;很多用户或许都会…

机器学习-笔记

绪论 参考期刊 ICCV 偏向视觉CVPR 偏向MLIAAA AI原理ICML 参考链接 CSDN 机器学习知识点全面总结 课堂内容学习-0912-N1 对于特征提取&#xff0c;简而言之就是同类聚得紧&#xff0c;异类分得开&#xff1b;   detection研究的是样本二分类问题&#xff0c;即分为正样本…

Rockdb简介

背景 最近在使用flink的过程中&#xff0c;由于要存储的状态很大&#xff0c;所以使用到了rockdb作为flink的后端存储&#xff0c;本文就来简单看下rockdb的架构设计 Rockdb设计 Rockdb采用了LSM的结构&#xff0c;它和hbase很像&#xff0c;不过严格的说&#xff0c;基于LS…

设计模式-行为型模式-责任链模式

一、什么是责任链模式 责任链模式是一种设计模式。在责任链模式里&#xff0c;很多对象由每一个对象对其下家的引用而连接起来形成一条链。请求在这个链上传递&#xff0c;直到链上的某一个对象决定处理此请求。发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求&…

VS2019编译安装GDAL(C++)程序库

一、GDAL简介 GDAL&#xff0c;全称Geospatial Data Abstraction Library&#xff0c;即地理空间数据抽象库&#xff0c;是一个在X/MIT许可协议下读写空间数据的开源库&#xff0c;可以通过命令行工具来进行数据的转换和处理。而在调用中我们常用的OGR&#xff08;OpenGIS Simp…

MATLAB中std函数用法

目录 语法 说明 示例 矩阵列的标准差 三维数组的标准差 指定标准差权重 矩阵行的标准差 数组页的标准差 排除缺失值的标准差 标准差和均值 标准差 std函数的功能是得到标准差。 语法 S std(A) S std(A,w) S std(A,w,"all") S std(A,w,dim) S std(A…

Android---Gradle 构建问题解析

想必做 Android App 开发的对 Gradle 都不太陌生。因为有 Android Studio 的帮助&#xff0c;Android 工程师使用 Gradle 的门槛不算太高&#xff0c;基本的配置都大同小异。只要在 Android Studio 默认生成的 build.gradle 中稍加修改&#xff0c;就都能满足项目要求。但是&am…

面试题c/c++ --STL 算法与数据结构

1.6 STL 模板 模板底层实现&#xff1a;编译器会对函数模板进行两次编译&#xff0c; 在声明的地方对模板代码本身进行编译&#xff0c; 在调用的地方对参数替换后的代码进行编译。 模板传参分析 模板重载 vector 是动态空间&#xff0c; 随着元素的加入&#xff0c; 它的内…

Apache Airflow (十二) :PythonOperator

&#x1f3e1; 个人主页&#xff1a;IT贫道_大数据OLAP体系技术栈,Apache Doris,Clickhouse 技术-CSDN博客 &#x1f6a9; 私聊博主&#xff1a;加入大数据技术讨论群聊&#xff0c;获取更多大数据资料。 &#x1f514; 博主个人B栈地址&#xff1a;豹哥教你大数据的个人空间-豹…

内网穿透的应用-如何在Docker中部署MinIO服务并结合内网穿透实现公网访问本地管理界面

文章目录 前言1. Docker 部署MinIO2. 本地访问MinIO3. Linux安装Cpolar4. 配置MinIO公网地址5. 远程访问MinIO管理界面6. 固定MinIO公网地址 前言 MinIO是一个开源的对象存储服务器&#xff0c;可以在各种环境中运行&#xff0c;例如本地、Docker容器、Kubernetes集群等。它兼…

HTTPS流量抓包分析中出现无法加载key

HTTPS流量抓包分析(TLSv1.2)&#xff0c;这篇文章分析的比较透彻&#xff0c;就不班门弄斧了 https://zhuanlan.zhihu.com/p/635420027 写个小问题&#xff1a;RSA密钥对话框加载rsa key文件的时候注意不要在中文目录下&#xff0c;否则会提示&#xff1a;“Enter the passwor…