gzip与deflate压缩的区别

gzip是一种数据格式,默认且目前仅使用deflate算法压缩data部分;
deflate是一种压缩算法,是huffman编码的一种加强。

deflate与gzip解压的代码几乎相同,可以合成一块代码。
区别仅有:

deflate使用inflateInit(),而gzip使用inflateInit2()进行初始化,比 inflateInit()多一个参数: -MAX_WBITS,表示处理raw deflate数据。因为gzip数据中的zlib压缩数据块没有zlib header的两个字节。使用inflateInit2时要求zlib库忽略zlib header。在zlib手册中要求windowBits为8..15,但是实际上其它范围的数据有特殊作用,见zlib.h中的注释,如负数表示raw deflate。 
Apache的deflate变种可能也没有zlib header,需要添加假头后处理。

即MS的错误deflate (raw deflate).zlib头第1字节一般是0x78, 第2字节与第一字节合起来的双字节应能被31整除,详见rfc1950。例如Firefox的zlib假头为0x7801,python zlib.compress()结果头部为0x789c。

时间: 2024-11-08 22:27:04

gzip与deflate压缩的区别的相关文章

Web服务器处理HTTP压缩之gzip、deflate压缩

一.什么是gzip gzip是一种数据格式,默认且目前仅使用deflate算法压缩data部分: Gzip是一种流行的文件压缩算法,现在的应用十分广泛,尤其是在Linux平台.当应用Gzip压缩到一个纯文本文件时,效果是非常明显的,大约可以减少70%以上的文件大小.这取决于文件中的内容. 利用Apache中的Gzip模块,我们可以使用Gzip压缩算法来对Apache服务器发布的网页内容进行压缩后再传输到客户端浏览器.这样经过压缩后实际上降低了网络传输的字节数,最明显的好处就是可以加快网页加载的速

ASP.NET Web API中使用GZIP 或 Deflate压缩

对于减少响应包的大小和响应速度,压缩是一种简单而有效的方式. 那么如何实现对ASP.NET Web API 进行压缩呢,我将使用非常流行的库用于压缩/解压缩称为DotNetZip库.这个库可以使用NuGet包获取 现在,我们实现了Deflate压缩ActionFilter. public class DeflateCompressionAttribute : ActionFilterAttribute { public override void OnActionExecuted(HttpAct

GZip、deflate和sdch压缩(网摘整理)

GZip和deflate: gzip是一种数据格式,默认且目前仅使用deflate算法压缩data部分:deflate是一种压缩算法,是huffman编码的一种加强. deflate与gzip解压的代码几乎相同,可以合成一块代码.区别仅有: deflate使用inflateInit(),而gzip使用inflateInit2()进行初始化,比 inflateInit()多一个参数: -MAX_WBITS,表示处理raw deflate数据.因为gzip数据中的zlib压缩数据块没有zlib he

HTTP gzip和deflate的几点区别

gzip是一种数据格式,默认且目前仅使用deflate算法压缩data部分:deflate是一种压缩算法,是huffman编码的一种加强. deflate与gzip解压的代码几乎相同,可以合成一块代码.区别仅有: deflate使用inflateInit(),而gzip使用inflateInit2()进行初始化,比 inflateInit()多一个参数: -MAX_WBITS,表示处理raw deflate数据.因为gzip数据中的zlib压缩数据块没有zlib header的两个字节.使用in

如何在java REST API中用GZip和Jersey压缩相应

有许多情景当你的REST api提供的相应是非常长的,并且我们都知道传递速度和贷款在移动设备/网络上是多重要.当开发支持REST apis的移动app的时候,我认为首要的性能最优化的点就是需要解决.猜猜是什么?因为响应式文本,因此我们能压缩这些文本.而且随着当前的只能手机和平板的能力,在客户端解压文本应该不是个大问题...因此在这篇文章中,如果你使用java的Jersey构建它,我将介绍你怎么能有选择性的压缩REST API响应,这个Jersey事JAX-RS的映射实现(还有更多)... 1.J

java压缩 GZIP进行简单压缩,ZIP进行多文件保存

java压缩  GZIP进行简单压缩,ZIP进行多文件保存 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGlhbmdydWkxOTg4/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" > package org.rui.io.compress; import java.io.BufferedOutputStream; import java.io

WebApi Gzip(Deflate) 压缩请求数据

由于不能直接访问指定数据库,只能通过跳板机查询Oracle数据,所以要做一个数据中转接口, 查询数据就要压缩,于是就找资料,代码如下,其中要注意的是Response.Headers.Remove("Content-Encoding"); 这段,对Response.Headrs的操作如果IIS6是不支持的, 会出现如下错误: 接口出现错误:"此操作要求使用 IIS 集成管线模式." () System.PlatformNotSupportedException: 此操

Linux命令(28):gzip/gunzip命令-压缩和解压

gzip/gunzip命令 功能说明 对文件进行压缩(gzip)或解压(gunzip),压缩文件预设的扩展名为".gz",gunzip就是gzip的硬链接,解压可以通过gzip -d命令实现.用法如下:   gzip [选项] 压缩 (解压缩) 的文档名 常用参数 选项 说明 -d 对压缩的文件进行解压(相当于gunzip的解压功能) -c 将结果输出的标准输出(相当于保留源文件) -r 递归式压缩指定目录以及子目录下的所有文件 -t 检查压缩文件完整性 -v 对于每个压缩和解压缩的文

web服务交互中HTTP数据内容GZIP,ZLIB格式压缩与解压缩封装(共享)

点击下载独立的dll //dll内部封装API格式 //gzip BOOL fnZlibDecompressPacket (__IN_PARAM unsigned char* gZlibDataBuffer,  __IN_PARAM size_t gZLibDataLength, __OUT_PARAM char* pChDataBuffer, __OUT_PARAM DWORD *pdwLength); BOOL fnZlibCompressPacket (__IN_PARAM unsigne