iis新建网站不能访问,厦门市网站建设app开发,好买卖做网站,dw asp access 网站开发优点Netty确实是一个很棒的框架#xff0c;提供了构建高性能HTTP服务器所需的所有功能。 令人高兴的是#xff0c;几乎所有东西都是开箱即用的#xff0c;只是必须以正确的方式组合在一起。 内容压缩 #xff08;gzip或deflate#xff09;也不例外。 但是#xff0c;在压缩静… 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-EncodingIdentity ”或特定的内容类型或小于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