问题标签 [deflate]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
http - 为什么现实世界的服务器更喜欢 gzip 而不是 deflate 编码?
我们已经知道deflate 编码在编码速度、解码速度和压缩大小方面胜过 gzip。
那么为什么没有大型网站(我能找到)发送它(当我使用接受它的浏览器时)?
雅虎声称通货紧缩“效果较差”。为什么?
我维护喜欢放气的 HTTP 服务器软件,所以我想知道是否有一些非常好的理由不继续这样做。
java - Java - 压缩输出字节数组的大小
当使用 java.util.zip.Deflater 的 deflate 方法时,必须提供一个 byte[] 作为参数,这个 byte[] 应该初始化到多大?我读过不能保证压缩数据会比未压缩数据更小。我应该使用一定百分比的输入吗?目前我把它做成输入的两倍大
apache - gzipped Apache 响应包分析
在我的 Apache 服务器 (mod_deflate) 中启用 gzip 压缩后,我始终发现最终用户的服务平均比未压缩响应慢 200 毫秒。
这是出乎意料的,所以我修改了压缩指令以仅压缩文本/HTML 响应,启动了 Wireshark 并查看了压缩前后的网络转储。
这是我对网络中流量最小的GET的观察
压缩前
压缩后
设置压缩后,网络上的事务数量明显低于未压缩时,这一点很清楚且可以理解。
但是,压缩数据单元从源传输到目标需要更长的时间。
似乎可以理解,压缩的额外工作需要时间,但无法理解为什么压缩时发送的每个数据都明显变慢。
我对压缩过程的理解是:
使用这个方案,我假设第三步是(响应的第一段之前的步骤将花费更长的时间,因为我们正在压缩 + 响应——但我假设的其余块平均应该相等时间作为未压缩的块,但它们不是。
谁能告诉我为什么……或者建议一种更好的方法来分析这种情况。还有人有前后比较...我将不胜感激任何反馈/评论/问题
php - gzdeflate() 和大量数据
我一直在构建一个类来在 PHP 中创建 ZIP 文件。ZipArchive 的替代方案,假设它在服务器中是不允许的。与那些免费服务器一起使用的东西。
它已经开始工作了,使用 PHP 构建 ZIP 结构,并使用 gzdeflate() 生成压缩数据。
问题是,gzdeflate() 要求我将整个文件加载到内存中,并且我希望类的工作限制在 32MB 的内存中。目前它存储的文件大于 16MB,完全没有压缩。
我想我应该让它压缩数据块,16MB x 16MB,但我不知道如何连接两个 gzdeflate() 的结果。
我一直在测试它,它似乎需要在最后 16 位中进行一些数学运算,有点buff->last16bits = (buff->last16bits & newblock->first16bits) | 0xfffe
,它有效,但不适用于所有样本......
问题:如何在不解压缩的情况下连接两个 DEFLATEd 流?
c# - Deflate Compression Stream 可以插入预压缩数据的位置。.NET 库是否存在?
我正在为 Web 内容实施 Deflate 和 GZip 压缩。.NET Framework DeflateStream 的性能非常好(它的压缩效果不如 SharpZipLib,但速度要快得多)。不幸的是,它(以及我知道的所有其他库)错过了写入预压缩数据的函数,例如 stream.WritePrecompressed(byte[] buffer)。
使用此功能,可以在流中插入预压缩块。这可以减少压缩这部分的 CPU 负载并增加 Web 服务器的总吞吐量。
是否有任何托管库能够做到这一点?或者,除了 ComponentAce 的 ZLIB.NET 之外,还有什么好的起点可以做到这一点?
optimization - Deflate 压缩浏览器的兼容性和优于 GZIP 的优势
2012 年 2 月 10 日更新:
zOompf 在这里完成了关于这个主题的一些非常彻底的研究。它胜过以下任何发现。
2010 年 9 月 11 日更新:
在这里为此创建了一个测试平台
GZIP 和 DEFLATE (zlib) 的 HTTP 1.1 定义以获取一些背景信息:
“'Gzip' 是 gzip 格式,而'deflate' 是 zlib 格式。他们可能应该将第二种格式称为 'zlib' 以避免与原始 deflate 压缩数据格式混淆。虽然 HTTP 1.1 RFC 2616 正确指向RFC 1950 中用于“deflate”传输编码的 zlib 规范,有报告称服务器和浏览器根据 RFC 1951 中的 deflate 规范错误地生成或期望原始 deflate 数据,最值得注意的是 Microsoft 产品。所以即使“deflate”使用 zlib 格式传输编码将是更有效的方法(实际上正是 zlib 格式的设计目的),由于 HTTP 1.1 作者不幸选择了名称,因此使用 'gzip' 传输编码可能更可靠。”(来源:http ://www.gzip.org/zlib/zlib_faq.html )
所以,我的问题:如果我发送没有 zlib 包装器(或 gzip,就此而言)的 RAW deflate 数据,是否有任何现代浏览器(例如,IE6 及更高版本、FF、Chrome、Safari 等)无法理解原始 deflate压缩数据(假设 HTTP 请求标头“Accept-Encoding”包含“deflate”)?
Deflate 数据总是比 GZIP 小几个字节。
如果所有这些浏览器都可以成功解码数据,那么发送 RAW deflate 而不是 zlib 有什么缺点?
2010 年 9 月 11 日更新:
在这里为此创建了一个测试平台
http - 常见的 HTTP 服务器实现是否解压 POSTed 表单数据?
如果我对 POST 请求表单数据进行 GZip,HTTP 服务器会解压缩它,还是只能以其他方式工作(服务器 -> 客户端)?
c# - 令人费解的 .Net C# DeflateStream 问题
我想知道是否有人可以阐明一个让我发疯的问题:
我正在写一个压缩解压测试类。为了测试它,我将数据集序列化为内存流,对其进行压缩、解压缩并比较结果。
压缩很好,但解压缩是它碰到污垢的地方。这是解压功能:
使用大小为 65536 的缓冲区,解压缩的流总是返回比未压缩的少一个字节。
现在,这将我带到了我正在与之抗争的第二个问题。对于某些缓冲区大小,uncompressStream.Read 即使仍有压缩数据要提取,也会返回 0。
对于这些情况,deflateStream.Read(s) 在 do{} 循环中只返回一次,然后返回一个等于 buffersize 的未压缩流,如果将 buffersize 增加一个字节,一切都很好(除了丢失的字节)。
缓冲区大小为 65536 的输出:(原始未压缩数据为 207833)
189544的缓冲区大小(代码坦克的一些神奇数字)
还要注意缓冲区大小 65536 的第三次读取,例如: bytesRead: [58472] 显然这也应该是 65536,因为缓冲区上还有数据吗?
任何想法将不胜感激。
蒂亚
- 雅科
compression - 使用 apache deflate 模块压缩 xls 内容
我正在尝试使用 apache deflate 模块压缩从我的应用程序发送的 excel 电子表格。我在启用站点的文件中添加了以下行:
但是似乎使响应数据更大???
使用 firebug,没有模块,我从应用程序下载了 xls 电子表格,它下载了 100Kb 的数据,文件系统上的文件大小也是预期的 100Kb。一旦我如上所述启用了 deflate 模块并重复该过程,下载的数据量为 295Kb?? 但是一旦保存在文件系统上,该文件仍然只有 100Kb。
作为一个实验,我手动压缩了保存的 xls 文件并将其压缩到 20Kb。
我在这里做错了什么?
使用放气(Firebug 输出):
没有放气(Firebug 输出):
python - 如何处理 urllib2 的瘪响应?
我目前使用以下代码来解压缩 urllib2 的 gzipped 响应:
它是否也处理放气响应还是我需要编写单独的代码来处理放气响应?