什么是Java好的压缩库?

时间:2020-03-06 14:39:37  来源:igfitidea点击:

我需要压缩部分应用程序网络流量以提高性能。我认为这意味着我需要远离一些较新的算法,例如bzip2,我认为我听说它的速度较慢。

解决方案

我们可以使用JDK中内置的Deflater / Inflater。也有GZIPInputStream和GZIPOutputStream,但这实际上取决于确切使用。

编辑:

阅读更多评论,看起来网络流量是HTTP。根据服务器的不同,它可能支持压缩(尤其是使用deflate / gzip)。然后问题出现在客户端上。如果客户端是浏览器,则它可能已经支持它。如果客户端是webservices客户端还是http客户端,请查看该软件包的文档以查看是否支持该软件包。

看起来jakarta-commons httpclient可能需要我们手动执行压缩。要在客户端启用此功能,我们需要执行以下操作

.addRequestHeader("Accept-Encoding","gzip,deflate");

如果网络流量通过HTTP传输,则大多数各种Web服务器/ Servlet容器都支持协商的zip,例如Apache的mod_deflate。

压缩算法取决于我们要优化的内容以及可用的带宽。

如果我们使用的是千兆位LAN,则几乎所有压缩算法都会使程序变慢一点。如果通过WAN或者Internet连接,则可以承受更多的压缩。如果连接到拨号,则应绝对压缩。

如果这是WAN,我们可能会发现像Riverbed的硬件解决方案更有效,因为它们可以处理各种流量,并且不需要对软件进行任何更改。

我有一个测试用例,它显示了Deflate,Filtered,BZip2和lzma之间的相对压缩差异。只需插入数据样本,然后测试两台计算机之间的时序即可。