日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發布時間:2023/12/3 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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 壓縮比

總結

以上是生活随笔為你收集整理的netty 压缩比_使Netty 4中的HTTP内容压缩工作的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。