2012-04-21 56 views
28

有人能告诉我以下脚本在CP​​U负载性能和压缩方面的差异吗?mod_deflate vs mod_gzip

<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> 
+0

可能的重复[为什么使用deflate而不是gzip来处理Apache提供的文本文件?](http://stackoverflow.com/questions/388595/why-use-deflate-instead-of-gzip-for-text- files-served-by-apache) – KingCrunch 2012-04-21 01:39:17

+0

[mod \ _deflate或mod \ _gzip,应该使用哪个?](http://stackoverflow.com/questions/3173147/mod-deflate-or-mod-gzip-应该使用哪一个) – 2014-01-29 07:07:01

回答

6

大多数压缩算法应用于纯文本文件时,可以将其大小减少70%或更多,具体取决于文件中的内容。使用压缩算法时,标准压缩级别与最大压缩级别之间的差异很小,尤其是在考虑处理这些额外压缩过程所需的额外CPU时间时。动态压缩Web内容时这非常重要。大多数软件内容压缩技术使用6个压缩级别(9个级别)来节省CPU周期。级别6和级别9之间的文件大小差异通常非常小,不值得花费额外的时间。

对于标识为文本/.* MIME类型的文件,可以在将文件放置在电线上之前对其进行压缩。这同时减少了传输的字节数并提高了性能。测试还表明,Microsoft Office和PostScipt文件可以进行GZIP编码以供压缩模块传输。

一些不能被GZIP编码的重要MIME类型是外部JavaScript文件,PDF文件和图像文件。 Javascript文件的问题主要是由于浏览器软件中的错误,因为这些文件实际上是文本文件,整体性能将受益于被压缩传输。 PDF和图像文件已经被压缩,并且试图再次压缩它们只是使它们变大并导致浏览器可能出现渲染问题。

在将压缩文件发送到客户端之前,服务器确保客户端正确接收数据并理解和呈现压缩格式至关重要。说明白压缩内容的浏览器发送下面的客户端请求头的变化:

Accept-encoding: gzip 

Accept-encoding: gzip, deflate 

目前主要的浏览器包括此消息所发送的每请求的一些变化。如果服务器看到标题和选择提供压缩的内容,它应该与服务器响应头回应:

欲了解更多信息,请参阅这篇文章:http://www.linuxjournal.com/article/6802

+7

这个答案提供了很多有用的信息,但根本没有解决这个问题:哪一个是更好的选择,为什么? – 2014-09-03 19:48:37

+0

这个复制和粘贴作业甚至不会尝试回答实际问题。我不知道为什么它被正面接收。 – thomasrutter 2018-03-06 12:53:46

9

我想你问它们之间的差异两个,而不是一般的压缩。在这种情况下,我建议使用依赖于仍然活动的项目zlib的mod_deflate。顺便说一句,比较两者的旧文章(6-7岁)已不再相关。

2

启用mod_deflate模块和mod_gzip的基本完成同样的事情,他们都压缩你的网页文件之前,他们会发送到你的网站的访问者。

虽然两者之间存在差异; mod_deflate有时可以有更好的压缩比例,如mod_gzip。你应该选择mod_deflate的另一个原因是,它更好地支持mod_gzip,这使得配置更容易,因为它有更好的文档记录。更多信息可以发现here

-3

恕我直言,你应该避免使用mod_deflate静态文件,而是通过mod_rewrite提供最佳压缩可用(7zip创建gzip AFAIK)来提供预压缩文件。 Apache不缓存gzip压缩的静态文件。

对于动态文件:取决于可用带宽 - mod_deflate需要大量的处理能力,但如果您的服务器能够使您的网络溢出则可用。

+0

-1你的回答是基于意见的,并且没有任何可量化的数据支持该观点。您需要根据您的使用情况权衡利弊。 – Precastic 2017-06-25 12:34:58

+0

我认为我的评论陈述了明显的事情。服务静态预压缩文件时,Apache可以提供大约10倍以上的文件。你可以节省约10%的带宽,因为7zip创建了较小的zip文件,然后是gzip。您将有一个更好的响应时间,而且没有gzipping。而且你正在浪费资源来一遍又一遍压缩相同的静态文件。整体mod_deflate是一个很好的模块,但只用于动态文件。 – azazil 2017-06-26 13:54:00

3

mod_gzip和mod_deflate是将gzip压缩添加到Apache的两个可选模块。 mod_deflate是现今较为现代化且推荐的一种,并与Apache一起发布。

不要被名字所迷惑,以为他们认为他们使用不同的压缩方案。他们都使用gzip(这是一个DEFLATE压缩格式的包装)。后者仅被称为mod_deflate,因为名称为mod_gzip。它们都将在等效设置下实现基本相同的压缩级别。

他们有不同的配置,所以你需要找到你正在使用的特定的文档。

+0

经过几年和一些喋喋不休,终于有人向OP发布了实际的答案。 – MarsAndBack 2018-01-13 14:18:38

相关问题