为什么对Apache提供的文本文件使用deflate而不是gzip?

628mspwn  于 2023-01-02  发布在  Apache
关注(0)|答案(9)|浏览(156)

对于LAMP服务器提供的html,css和javascript文件,这两种方法有什么优势?有更好的替代方法吗?
服务器使用Json向Map应用程序提供信息,因此需要大量的小文件。

另请参阅Is there any performance hit involved in choosing gzip over deflate for http compression?

mm5n2pyu

mm5n2pyu1#

对于解压缩来说,gzip和deflate应该没有任何区别。Gzip只是deflate加上了几十个字节的头,包括一个校验和。校验和是压缩速度慢的原因。但是当你预压缩无数的文件时,你希望这些校验和作为你文件系统的一个健全性检查。另外,你可以使用命令行工具来获取文件的统计信息。对于我们的网站,我们正在预压缩大量的静态数据(整个开放目录,13,000个游戏,自动完成数百万个关键字,等等),我们排名95%的速度比所有网站由Alexa. Faxo Search.然而,我们确实使用了一个国产的专有网络服务器,Apache/mod_deflate并不能解决这个问题。当这些文件被压缩到文件系统中时,您不仅会受到文件系统块大小最小的文件的影响,还会承受管理文件的所有不必要的开销在文件系统中,web服务器可能不太关心。你应该关心的是总的磁盘占用量和访问/解压缩时间,其次是能够预压缩这些数据的速度。占用量很重要,因为即使磁盘空间很便宜,你也希望尽可能多地放入该高速缓存中。

ufj5ltwl

ufj5ltwl2#

在已经安装了Apache 2和deflate模块(默认情况下)的Ubuntu上,可以通过两个简单的步骤启用deflate gzip压缩:

a2enmod deflate
/etc/init.d/apache2 force-reload

你不在了!我发现我通过adsl连接提供的页面加载速度快得多。

**编辑:**根据@GertvandenBerg的评论,这将启用gzip压缩,而不是deflate。

6uxekuva

6uxekuva3#

如果我没记错话

  • gzip将压缩比放气多一点
  • 放气更有效
ugmeyewa

ugmeyewa4#

为什么对Apache提供的文本文件使用deflate而不是gzip?
简单的答案是不要
RFC 2616将放气定义为:
deflate RFC 1950中定义的"zlib"格式与RFC 1951中描述的"deflate"压缩机制相结合
zlib格式在RFC 1950中定义为:

0   1
     +---+---+
     |CMF|FLG|   (more-->)
     +---+---+

       0   1   2   3
     +---+---+---+---+
     |     DICTID    |   (more-->)
     +---+---+---+---+

     +=====================+---+---+---+---+
     |...compressed data...|    ADLER32    |
     +=====================+---+---+---+---+

几个报头和一个ADLER32校验和
RFC 2616将gzip定义为:
gzip由文件压缩程序"gzip"(GNU zip)产生的编码格式,如RFC 1952 [25]所述。这种格式是一种带有32位CRC的Lempel-Ziv编码(LZ77)。
RFC 1952将压缩数据定义为:
该格式目前使用DEFLATE压缩方法,但可以很容易地扩展到使用其他压缩方法。
CRC-32为slower than ADLER32
与相同长度的循环冗余校验相比,它以可靠性换取速度(更喜欢后者)。
因此......我们有2种压缩机制,它们使用相同的算法进行压缩,但使用不同的算法进行报头和校验和。
现在,底层TCP数据包已经相当可靠,所以这里的问题不是Adler 32与GZIP使用的CRC-32
事实证明,多年来许多浏览器执行了一个不正确的deflate算法。它们不期望RFC 1950中的zlib报头,而是期望压缩的有效负载。类似地,各种Web服务器也犯了同样的错误。
所以,多年来浏览器开始实现一个模糊逻辑deflate实现,他们尝试zlib头和adler校验和,如果失败,他们尝试有效载荷。
拥有那样复杂的逻辑的结果是它经常被打破。Verve Studio有一个user contributed test部分,显示情况有多糟糕。
例如:deflate在Safari 4.0中工作,但在Safari 5.1中损坏,它在IE上也总是有问题。
因此,最好的办法是避免放气完全,轻微的速度提升(由于阿德勒32)是不值得的风险,打破有效载荷。

nzkunb0c

nzkunb0c5#

GZip只是deflate加上一个校验和和以及页眉/页脚。不过,deflate更快,就像I learned the hard way.一样

(来源:typepad.com

gtlvzcf8

gtlvzcf86#

你很可能无法选择deflate作为选项,与你所期望的相反,mod_deflate 使用的不是deflate而是gzip,所以虽然大多数观点是正确的,但可能与大多数观点无关。

ijxebb2r

ijxebb2r7#

主要原因是deflate比gzip编码速度更快,在忙碌的服务器上可能会有所不同,而静态页面则是另一个问题,因为它们可以很容易地预压缩一次。

laximzn5

laximzn58#

我认为deflate和gzip之间没有太大的区别,因为gzip基本上只是一个包在deflate周围的头文件(参见RFC 1951和1952)。

k5ifujac

k5ifujac9#

mod_deflate在服务器上需要的资源较少,尽管您可能会在压缩量方面付出一些代价。
如果您正在处理许多小文件,我建议您对压缩和未压缩的解决方案进行基准测试和负载测试-您可能会发现在某些情况下启用压缩不会带来节约。

相关问题