Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 节点zlib——内部应用程序数据库中字符串的Gzip vs Deflate vs DeflateRaw_Javascript_Node.js_Compression_Gzip_Zlib - Fatal编程技术网

Javascript 节点zlib——内部应用程序数据库中字符串的Gzip vs Deflate vs DeflateRaw

Javascript 节点zlib——内部应用程序数据库中字符串的Gzip vs Deflate vs DeflateRaw,javascript,node.js,compression,gzip,zlib,Javascript,Node.js,Compression,Gzip,Zlib,我想知道如何压缩相对较小的字符串,在1到10kb之间,以便存储在我的服务器上。在实际请求期间,服务器和接收客户端应用程序将不会使用我选择的压缩。压缩将仅用于节省服务器上的存储空间 在这种情况下,是否真的需要将gzip与其头一起使用?我可以用deflate吗?也许甚至可以对原始数据进行压缩,因为我知道所有情况下字符串的编码 我看到的反对deflate的#1论点是浏览器中的实现不一致,但在我的例子中这似乎无关紧要 我的思维有什么问题吗 如果deflate是gzip的可行替代方案,那么deflate

我想知道如何压缩相对较小的字符串,在1到10kb之间,以便存储在我的服务器上。在实际请求期间,服务器和接收客户端应用程序将不会使用我选择的压缩。压缩将仅用于节省服务器上的存储空间

在这种情况下,是否真的需要将gzip与其头一起使用?我可以用deflate吗?也许甚至可以对原始数据进行压缩,因为我知道所有情况下字符串的编码

我看到的反对deflate的#1论点是浏览器中的实现不一致,但在我的例子中这似乎无关紧要

我的思维有什么问题吗


如果deflate是gzip的可行替代方案,那么deflate raw呢?

在您的web应用程序内部,您可以使用任何压缩-如果您将未压缩的数据发送到HTTP客户机,则在连接上没有任何区别

然而,这样做始终是一种权衡——服务器的实现将更加复杂,并且您将需要更多的CPU能力。仅当数据是可压缩的,并且大对象(例如视频文件/磁盘图像)往往已经被压缩时,它才起作用

对于许多应用程序,磁盘空间不是问题,低延迟和最小复杂性是更重要的问题。如果您的应用程序存储大量可压缩数据,而这些数据很少被请求,那么这种压缩方案可能确实是一个好主意


但在实现复杂代码之前,先计算一下它是否真的值得权衡。还要考虑文件系统级压缩(很容易实现,实现是别人的问题)。如果你的目标是节省空间,你也应该考虑各种算法,从LZ4(非常快)超过GZIP/Pultual/DopEtAWAW(所有相同的,只是不同的头)到LZMA(非常慢但非常有效)。

< P>第一个术语。Deflate指原始Deflate格式,如RFC 1951所述。因此,“平减”和“原始平减”之间没有区别。您可能会想到命名错误的“deflate”HTTP编码,它实际上不是deflate,而是zlib,如RFC1950中所述

其次,将小字符串压缩为独立的、可解压缩的文件(这似乎是您所暗示的),在大多数情况下会导致相当差的压缩。您应该连接这些字符串,以及能够再次将它们分开所需的任何结构,至少达到1MB级别,并对这些字符串应用压缩。您没有说明以后如何访问这些字符串,在这样的方案中需要考虑这些字符串

第三,即使将小字符串压缩在1KB到10KB的范围内,gzip、zlib和deflate之间的差异在所占用的空间中基本上可以忽略不计。三种格式的头和尾分别占18字节、6字节和0字节。所以,如果你关心的是空间,那么离开gzip并没有什么好处

第四,压缩时不计算CRC-32或Adler-32校验值(分别在gzip和zlib中使用)可能有一个小的速度优势,但与压缩所花费的时间相比,它也可以忽略不计