我想知道如何压缩 1 到 10kb 之间的相对较小的字符串,以便在我的服务器上进行存储。服务器和接收客户端应用程序在实际请求期间不会使用我选择的压缩。压缩将仅用于节省服务器上的存储空间。
在这种情况下,是否真的需要使用带有 header 的 gzip?我可以使用放气吗?甚至可能放气原始,因为我知道在所有情况下字符串的编码?
我看到的第一个反对 deflate 的论点是浏览器中的实现不一致,但这对我来说似乎无关紧要。
我的想法有问题吗?
如果 deflate 是 gzip 的可行替代方案,那么 deflate raw 呢?
最佳答案
首先是一些术语。 Deflate 是指原始 deflate 格式,如 RFC 1951 中所述。因此“deflate”和“deflate raw”之间没有区别。您可能会想到名称错误的“deflate”HTTP 编码,它实际上不是 deflate,而是 zlib,如 RFC 1950 中所述。
其次,在大多数情况下,将小字符串压缩为独立的、可解压缩的文件(这似乎是您暗示的)将导致压缩效果相当差。您应该连接这些字符串,以及您需要能够再次将它们分开的任何结构,至少到大约 1 MB 的级别并对其应用压缩。您没有说明以后要如何访问这些字符串,在此类方案中需要考虑到这一点。
第三,即使压缩 1 KB 到 10 KB 范围内的小字符串,gzip、zlib 和 deflate 之间的差异在占用的空间上基本上可以忽略不计。三种格式的头部和尾部分别占 18 字节、6 字节和 0 字节。因此,如果您担心的是空间,那么远离 gzip 几乎没有什么好处。
第四,在压缩时不计算 CRC-32 或 Adler-32 校验值可能有一个小的速度优势(分别用于 gzip 和 zlib),但与压缩所花费的时间相比,它再次可以忽略不计。
关于javascript - Node zlib -- Gzip vs Deflate vs DeflateRaw 用于内部应用程序数据库中的字符串,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49349960/