在article中关于远程调用框架的过滤器(向下滚动~50%)一章中提到了两种压缩方式:
那些有什么区别?是ZLib相关还是这些常见的压缩方法?
搜索时,我只能找到有状态和无状态的Web服务。不是无状态/有意义的属性来描述压缩方法吗?
答案 0 :(得分:3)
来自Transport Layer Security Protocol Compression Methods:
与TLS一起使用的压缩方法可以 要么是有状态的(压缩机 通过所有人保持它的状态 压缩记录)或无状态 (压缩机压缩每条记录 独立),但似乎 使用一个鲜为人知的好处 无状态压缩方法 TLS。
有些压缩方法有 保持历史的能力
压缩时的信息和 解压缩数据包有效负载。该
压缩历史允许更高 压缩比要达到 与每个数据包相比的流 压缩,但保持一个 跨数据包的历史意味着a 数据包可能包含所需的数据 完全解压缩包含的数据 在另一个包中。历史 维护因此需要a 可靠的链接和顺序包 交货。由于TLS和下层 协议提供可靠, 顺序分组传送,压缩 历史信息可能是 如果支持则维护和利用 通过压缩方法。
答案 1 :(得分:3)
通常,无状态描述任何没有过去事件记忆的进程,有状态描述任何具有这种记忆的进程(并使用它来做出决策。)
在压缩中,无状态意味着它看到的任何数据块,它会压缩,而不依赖于先前的输入。它更快但通常压缩更少;有状态压缩查看以前的数据以决定如何压缩当前数据,它更慢但压缩得更好。
答案 2 :(得分:3)
Zlib是一种自适应的压缩算法。所有压缩算法都有效,因为它们所处理的数据并非完全随机。相反,他们的输入数据具有可以被利用的非均匀分布。以英文文本为例。字母e
远比字母q
更常见。 Zlib将检测到这一点,并为字母e
使用更少的位。
现在,当您发送大量短文本消息时,您知道它们都是英文的,您应该使用Zlib状态压缩。它会在所有消息中保留字母e
的低位表示。但如果有中文,日文,法文等信息混杂在一起,那么有状态压缩就不再那么聪明了。日文文本中的字母e
很少。无状态压缩将检查每个消息哪些字母是常见的。一个众所周知的ZLib无状态压缩示例是PNG文件格式,它在两个不同的图像之间不保持状态。