提问人:Bachalo 提问时间:4/21/2012 最后编辑:Sumurai8Bachalo 更新时间:4/26/2019 访问量:30604
mod_deflate 与 mod_gzip
mod_deflate vs mod_gzip
问:
有人可以告诉我以下脚本在 CPU 负载性能和压缩方面的差异吗?
<ifModule mod_gzip.c>
mod_gzip_on Yes
mod_gzip_dechunk Yes
mod_gzip_item_include file \.(html?|txt|css|js|php|pl)$
mod_gzip_item_include handler ^cgi-script$ mod_gzip_item_include mime ^text/.*
mod_gzip_item_include mime ^application/x-javascript.*
mod_gzip_item_exclude mime ^image/.*
mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.*
</ifModule>
<ifModule mod_deflate.c>
<filesMatch "\.(js|css)$"> SetOutputFilter DEFLATE </filesMatch>
</ifModule>
答:
大多数压缩算法在应用于纯文本文件时,可以将其大小减小 70% 或更多,具体取决于文件中的内容。使用压缩算法时,标准压缩级别和最大压缩级别之间的差异很小,尤其是在考虑处理这些额外压缩传递所需的额外 CPU 时间时。这在动态压缩 Web 内容时非常重要。大多数软件内容压缩技术使用 6 级(共 9 个级别)的压缩级别来节省 CPU 周期。级别 6 和级别 9 之间的文件大小差异通常非常小,以至于不值得花费额外的时间。
对于标识为 text/.* MIME 类型的文件,可以在将文件放在网络上之前对文件应用压缩。这同时减少了传输的字节数并提高了性能。测试还表明,Microsoft Office 和 PostScipt 文件可以进行 GZIP 编码,以便通过压缩模块进行传输。
一些无法进行 GZIP 编码的重要 MIME 类型是外部 JavaScript 文件、PDF 文件和图像文件。Javascript文件的问题主要是由于浏览器软件中的错误,因为这些文件实际上是文本文件,并且通过压缩传输将有利于整体性能。PDF 和图像文件已经被压缩,尝试再次压缩它们只会使它们变大,并导致浏览器出现潜在的渲染问题。
在将压缩文件发送到客户端之前,服务器必须确保接收数据的客户端正确理解并呈现压缩格式。了解压缩内容的浏览器会发送以下客户端请求标头的变体:
Accept-encoding: gzip
Accept-encoding: gzip, deflate
当前的主要浏览器在发送的每个请求中都包含此消息的一些变体。如果服务器看到标头并选择提供压缩内容,则应使用服务器响应标头进行响应:
有关详细信息,请参阅以下文章:http://www.linuxjournal.com/article/6802
评论
我猜你是在问这两者之间的区别,而不是一般的压缩。在这种情况下,我建议使用依赖于仍然活跃的项目 zlib 的mod_deflate。顺便说一句,比较两者的旧文章(6-7 岁)不再相关。
看看这篇文章 linuxjournal.com
http://www.linuxjournal.com/article/6802
除此之外,mod_deflate 更容易配置,并且通常随 apache 包一起提供。
启用 mod_deflate 和 mod_gzip 基本上可以完成相同的操作,它们都会在将 Web 文件发送给您网站的访问者之前对其进行压缩。
不过,两者之间存在差异;mod_deflate有时可以有稍微好的压缩百分比作为mod_gzip。您应该选择mod_deflate的另一个原因是因为它mod_gzip更好地支持,这使得它更容易配置,因为它有更好的文档记录。更多信息可以在这里找到。
恕我直言,您应该避免将mod_deflate用于静态文件,而是通过具有最佳压缩率的mod_rewrite提供预压缩文件(7zip 创建了 gzip AFAIK)。Apache 不缓存 gzip 压缩的静态文件。
对于动态文件:取决于可用带宽 - mod_deflate需要大量的处理能力,但如果您的服务器能够溢出您的网络,则可以使用。
评论
这两个模块都做同样的事情:即时添加 gzip 压缩。
现在你应该使用的那个是mod_deflate - 它是更现代和推荐的,并与 Apache 一起分发。mod_gzip 是一个较旧的第三方实现,没有充分的理由再使用它。
不要被这些名称所迷惑,以为它们使用不同的压缩方案。它们都使用 gzip(这是一种使用称为 DEFLATE 的压缩算法的格式)。后者之所以被称为mod_deflate,是因为取了mod_gzip这个名字。它们都将在相同的设置下实现相同的压缩级别。
它们具有不同的配置(可能包括不同的默认设置),因此您需要查找正在使用的特定配置的文档。
评论