netty 压缩比_使Netty 4中的HTTP内容压缩工作

netty 压缩比

Netty实际上是一个很棒的框架,提供了构建高性能HTTP服务器所需的所有功能。 令人高兴的是,几乎所有东西都是开箱即用的,只是必须以正确的方式组合在一起。 内容压缩 (gzip或deflate)也不例外。 但是,在压缩静态内容时,我跌跌撞撞了好几次,然后一切才能按预期进行:

基于netty提供的http / file示例,我习惯于采用以下方法来提供静态文件(与netty 3.6.6中使用的相同):

RandomAccessFile raf = new RandomAccessFile(file, "r");
HttpResponse response = new DefaultHttpResponse(HTTP_1_1, OK); 
ctx.write(response);if (useSendFile) {ctx.write(new DefaultFileRegion(raf.getChannel(), 0, fileLength));
} else {ctx.write(new ChunkedFile(raf, 0, fileLength, 8192));
}

但是,一旦我将HttpContentCompressor添加到管道中,Firefox就会失败,并显示诸如“无效的内容编码”之类的消息。

事实证明, HttpContentCompressor希望将HttpContent对象作为输入块进行压缩。 但是, ChunkedWriteHandler直接将ByteBufs发送到下游。 同时发送FileRegion (useSendFile = true)会使内容压缩程序不受影响。

为了解决此问题,我创建了一个名为ChunkedInputAdapter的类,该类采用ChunkedInput <ByteBuf>并表示ChunkedInput <HttpContent> 。 但是,仍然不能令人满意的有两个方面:第一,仍然不能使用FileRegions零复制功能 ,第二,已经压缩的文件(如JPEG)将再次被压缩。 因此,我使用名为SmartContentCompressor的类对HttpContentCompressor进行了子封装。 此类检查是否存在标头“ Content-Encoding:Identity ”或特定的内容类型小于1 kB内容长度 。 在这种情况下,将绕过内容压缩。

使用此组合可以同时使用内容压缩(如果有用)和零复制功能(如果文件已经压缩)。

上面提到的所有资源都是根据MIT许可和S IRIUS框架的一部分开源的 。

参考:来自Andy的软件工程专栏博客的JCG合作伙伴 Andreas Haufler使netty 4中的HTTP内容压缩工作 。

翻译自: https://www.javacodegeeks.com/2014/01/making-http-content-compression-work-in-netty-4.html

netty 压缩比

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

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

相关文章

蓝桥杯单片机基础学习00_1

一、基础准备 1、烧录软件 (1)单片机型号:IAP15F2K61S2 (2)输入用户程序运行时的IRC频率:11.0592MHz 2、CT107D单片机综合实训平台 CT107D:单片机芯片(全I/O兼容8051系列,为保留P3.6,P3.7的WR,RD功能由P4.2,P4.4替换。);显示模块;输入/输出模块;传感模块;存储/A…

带有Oracle Digital Assistant和Fn Project的会话式UI

在这里和那里&#xff0c;我们看到许多预测&#xff0c;很快聊天机器人将在用户与其系统之间的通信中扮演关键角色。 我没有水晶球&#xff0c;也不想等待这个“很快”&#xff0c;所以我决定现在就使这些预言成真&#xff0c;看看它的样子。 我正在工作的公司的标志产品是Fle…

【渝粤教育】电大中专测量学 (2)作业 题库

1.测量学是研究地球的形状和大小以及确定地面点&#xff08;&#xff09;位置的科学。 A.平面 B.空间 C.曲面 D.高程 错误 正确答案&#xff1a;左边查询 学生答案&#xff1a;A 2.测量学中的水准面是一个&#xff08;&#xff09;。 A.斜平面 B.水平面 C.竖直面 D.曲面 正确 正…

【渝粤教育】电大中专电商运营实操 (1)作业 题库

1.电子商务的特点包括&#xff1a;交易环节少&#xff0c;营销成本低&#xff1b;全球性&#xff1b;简单的电子化支付手段&#xff1b;客户信息易于管理&#xff1b;符合全球经济发展要求&#xff1b;社会性&#xff1b;信息化。 &#xff08; &#xff09; A.错误 B.正确 错误…

蓝桥杯单片机基础学习00_2

三、功能模块 4、中断系统 中断系统 1&#xff09;中断的概念&#xff1a;这是大家需要在脑子里有的一个印象&#xff0c;我们大致可以将中断描述成CPU在处理某一事件A时&#xff0c;发生了另一事件B请求CPU迅速去处理&#xff08;中断发生&#xff09;&#xff1b;CPU暂时中…

【渝粤教育】电大中专电商运营实操12作业 题库

1.电子商务最重要的是&#xff08; &#xff09; A.信息技术 B.货物 C.商务 D.网站 错误 正确答案&#xff1a;左边查询 学生答案&#xff1a;A 2.电子商务对实体店产生革命性的影响&#xff0c;它会快速提高现在零售业的服务标准。 &#xff08; &#xff09; A.正确 B.错误 错…

【渝粤教育】电大中专电子商务网站建设与维护 (26)作业 题库

1.阿里巴巴信息服务栏目主要包括以下内容&#xff1a;商业机会、产品展示、公司全库、行业资讯、价格行情、以商会友、商业服务。 &#xff08; &#xff09; A.正确 B.错误 正确 正确答案&#xff1a;左边查询 学生答案&#xff1a;A 2.阿里巴巴取得成功的因素主要有&#xff…

通信原理速识1:绪论

模块1 通信系统的端到端框架 &#xff08;一&#xff09;模拟通信系统 存在的两种变换 1.发送端&#xff1a;把连续信息变换成原始电信号&#xff08;基带信号&#xff09;&#xff08;信源&#xff09; 接收端&#xff1a;把电信号变换成连续消息&#xff08;受信&#xff09;…

atomiclong_想要更快地使用AtomicLong? 等待它。

atomiclong我经常听到Java原子类型&#xff08;java.util.concurrent.atomic&#xff09;超级快&#xff0c;可以很好地与高度并发的代码一起使用。 大多数时候&#xff0c;原子以健壮和高效的方式完成其工作。 但是&#xff0c;在某些情况下&#xff0c;原子类型上非托管争用的…

数字信号处理基础知识00

数字信号处理 Digital Signal Processing 离散时间信号与系统分析 Z变换 离散傅立叶变换&#xff08;DFT&#xff09; 快速傅立叶变换&#xff08;FFT&#xff09; 离散时间系统的结构 IIR滤波器的设计 FIR滤波器的设计 绪论——数字信号处理概述 基本概念&#xff1a;信号定…

Apache Camel 3的工作终于开始了

我们正在开始Apache Camel 3的工作。 我们正在多方面努力改善骆驼并引入新功能。 实际上&#xff0c;Guillaume Nodet的第一项工作实际上是在10月初开始的 &#xff0c;在那里他通过清理代码库&#xff0c;删除不推荐使用的代码和组件&#xff0c;改进路由引擎和核心中的其他内…

工程电磁场与电磁波第1章——矢量分析

1矢量分析 1.1 矢量代数 1.1.1 矢量加减法 1.1.2 矢量乘积 矢量的标量积&#xff1a;点积 矢量的矢量积&#xff1a;叉积 标量三重积、矢量三重积 1.2 正交坐标系 正交坐标系 正交坐标系的点积、叉积、标量三重积 度量系数 1.2.1 直角坐标系 1.2.2 圆柱坐标系 1.2.3 球坐标…

蓝桥杯扫盲之int, char, unsigned int, unsigned char的使用

一、C51常用数据类型 C语言中默认规则&#xff1a;short int 即为int&#xff0c;long int 即为 long&#xff0c;前面若无unsigned符号默认signed型。 0和1每一个所占空间是一位&#xff08;b&#xff09;&#xff0c;也是单片机存储器中最小的单位。 1B&#xff08;字节&…

集成测试还原数据库_项目学生:分片集成测试数据

集成测试还原数据库这是Project Student的一部分。 其他职位包括带有Jersey的Webservice Client&#xff0c;带有Jersey的 Webservice Server &#xff0c; 业务层和带有Spring Data的持久性 。 到目前为止&#xff0c;所有集成测试都使用了一个内存嵌入式数据库&#xff0c;该…

第十一届 蓝桥杯 单片机设计与开发项目 省赛 程序设计试题及源码

一、试题 1、 基本要求 1.1 使用大赛组委会提供的国信长天单片机竞赛实训平台,完成本试题的程序设计 与调试。 1.2 选手在程序设计与调试过程中,可参考组委会提供的“资源数据包”。 1.3 请注意: 程序编写、调试完成后选手应通过考试系统提交完整、可编译的 Keil 工程文件…

AWS:避免那些“神圣的法案”时刻的一些技巧

云非常棒&#xff1a;几乎100&#xff05;的可用性&#xff0c;几乎零维护&#xff0c;按需付费&#xff0c;最重要的是&#xff0c;它具有无限的可扩展性。 但是最后两个很容易把你咬回去&#xff0c;把那令人敬畏的事情变成一场噩梦。 有时您会看到类似的故事&#xff1a; …

樊昌信版通信原理期末复习第一章绪论

第1章 绪论 一、知识点梳理 1、通信的目的&#xff1a;传递消息中所包含的信息。 2、消息&#xff1a;是物质或精神状态的一种反映。 3、信息&#xff1a;是消息中包含的有效内容。 4、通信系统的一般模型 信源输入变换器&#xff1a;将非电物理量变成电信号。 发送设备&…

DC/DC开关电源设计

DC/DC开关电源设计视频讲解链接&#xff1a;https://www.bilibili.com/video/BV1Dv411y7jM?t156 一、电源概述 主要内容&#xff1a;线性稳压电源和开关稳压电源的概念理解 1、稳压电源&#xff08;stabilized voltage supply&#xff09;是能为负载提供稳定的交流电或直流…

jboss junit_使用junit-drools进行JBoss Drools单元测试

jboss junit最近&#xff0c;我一直在大量使用JBoss Drools进行项目。 我不是Drools专家-我也不太相信这个框架&#xff0c;或者可能不是只相信该项目中的特定用例-我发现很难为基于Drools的业务规则编写简单&#xff0c;可维护的单元测试 。 这就是junit-drools诞生的方式–简…

办公基础(小黑课堂)

F2&#xff1a;重命名 F4&#xff1a;重复上次操作 F5&#xff1a;刷新网页 F11&#xff1a;全屏显示网页 F12&#xff1a;另存为 笔记本中&#xff1a;Fn rand() 形成一段文字文本 lorem() 形成一段英文文本 CtrlP&#xff1a;打印 CtrlY&#xff1a;反撤销 Ctrl Shift N…