netty 压缩比_使Netty 4中的HTTP内容压缩工作
netty 壓縮比
Netty實際上是一個很棒的框架,提供了構建高性能HTTP服務器所需的所有功能。 令人高興的是,幾乎所有東西都是開箱即用的,只是必須以正確的方式組合在一起。 內容壓縮 (gzip或deflate)也不例外。 但是,在壓縮靜態內容時,我跌跌撞撞了好幾次,然后一切才能按預期進行:
基于netty提供的http / file示例,我習慣于采用以下方法來提供靜態文件(與netty 3.6.6中使用的相同):
但是,一旦我將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框架的一部分開源的 。
翻譯自: https://www.javacodegeeks.com/2014/01/making-http-content-compression-work-in-netty-4.html
netty 壓縮比
總結
以上是生活随笔為你收集整理的netty 压缩比_使Netty 4中的HTTP内容压缩工作的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 备案机关是什么意思(备案和关务)
- 下一篇: 带有Oracle Digital Ass