有人能告诉我以下脚本在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>
答案 0 :(得分:10)
这两个模块都做同样的事情:动态添加gzip压缩。
这些天你应该使用的是 mod_deflate - 它是更现代和推荐的,并与Apache一起分发。 mod_gzip是一个较旧的第三方实现,没有充分的理由再使用它了。
不要被名字欺骗,以为他们使用不同的压缩方案。它们都使用gzip(这是一种使用称为DEFLATE的压缩算法的格式)。后者仅被称为mod_deflate,因为名称为mod_gzip。它们都将使用相同的设置达到相同的压缩级别。它们具有不同的配置(可能包含不同的默认设置),因此您需要找到您正在使用的特定文档的文档。
答案 1 :(得分:9)
我猜你问的是这两者之间的差异,而不是一般的压缩。在这种情况下,我建议使用mod_deflate,它依赖于仍处于活动状态的项目zlib。 BTW,比较两者的旧文章(6-7岁)不再相关。
答案 2 :(得分: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
答案 3 :(得分:3)
启用mod_deflate和mod_gzip基本上可以实现相同的功能,它们都会在将Web文件发送给您网站的访问者之前对其进行压缩。
但两者之间存在差异; mod_deflate 有时可以比 mod_gzip 更轻松地获得更好的压缩百分比。你应该选择mod_deflate的另一个原因是因为它更好地支持mod_gzip,因为它更容易配置,因为它有更好的文档记录。可以找到更多信息here。
答案 4 :(得分:1)
查看linuxjournal.com上的这篇文章
http://www.linuxjournal.com/article/6802
除此之外,mod_deflate更易于配置,并且通常包含在apache包中。
答案 5 :(得分:-3)
恕我直言你应该避免使用mod_deflate作为静态文件,而是通过mod_rewrite提供预压缩文件,并提供最佳压缩(7zip创建gzip AFAIK)。 Apache没有缓存gzip压缩静态文件。
对于动态文件:取决于可用带宽 - mod_deflate需要大量处理能力,但如果您的服务器能够溢出网络,则可以使用。