如何使用Apache2的mod_deflate保存流量

如何使用Apache2的mod_deflate保存流量

版本1.0
作者:Falko Timme

在本教程中,我将介绍如何在Apache2 Web服务器上安装和配置mod_deflatemod_deflate允许Apache2压缩文件并将其传递给可以处理大多数现代浏览器所做的压缩内容的客户端(例如浏览器)。 使用mod_deflate ,您可以将HTML,文本或XML文件压缩到大约。 20-30%的原始尺寸,从而节省您的服务器流量,使您的调制解调器用户更快乐。

压缩文件会导致服务器负载稍高,但根据我的经验,客户端与服务器的连接时间减少了很多。 例如,需要七秒钟下载未压缩的HTML文件的调制解调器用户现在可能只需要两秒钟的时间才能使用相同但压缩的文件。

通过使用mod_deflate,您不必担心您会排除使用旧版浏览器无法处理压缩内容的用户。 浏览器在传输任何文件之前与服务器进行协商,如果浏览器无法处理压缩内容,则服务器将传送未压缩的文件。

mod_deflate已经在Apache2中取代了Apache 1.3的mod_gzip 。 如果要使用Apache 1.3提供压缩文件,请查看本教程: mod_gzip - 由Apache网络服务器提供压缩内容

我想先说说这不是建立这样一个系统的唯一途径。 实现这一目标有很多方法,但这是我所采取的方式。 我不会保证这将为您工作!

1启用mod_deflate

如果您安装了Apache2, 那么您的系统上也应该安装mod_deflate。 现在我们必须启用它。 在Debian上,我们可以这样做:

a2enmod deflate

然后重新启动Apache2:

/etc/init.d/apache2 restart

在其他发行版上,您可能需要手动编辑Apache2的配置才能启用mod_deflate 。 您可能需要向LoadModule部分添加一行:

LoadModule deflate_module /usr/lib/apache2/modules/mod_deflate.so

确保调整到mod_deflate.so的路径,然后重新启动Apache2。

2配置mod_deflate

文件的压缩可以通过以下两种方式之一进行配置:通过扩展显式排除文件或通过MIME类型显式包含文件。 您可以为整个Apache2服务器或只针对特定的虚拟站点启用mod_deflate 。 根据这一点,现在打开Apache2的全局服务器配置部分,或者打开你要启用mod_deflate的vhost配置部分。

2.1按MIME类型明确包含文件

如果要仅压缩HTML,文本和XML文件,请将此行添加到您的配置中:

AddOutputFilterByType DEFLATE text/html text/plain text/xml

这是我使用的配置,因为我不想压缩图像或PDF文件或已压缩的文件,如zip文件。

2.2扩展文件的显式排除

如果要压缩所有文件类型并仅排除一些,则可以将其添加到配置中(而不是2.1节中的行):

SetOutputFilter DEFLATE
SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ \
no-gzip dont-vary
SetEnvIfNoCase Request_URI \
\.(?:exe|t?gz|zip|bz2|sit|rar)$ \
no-gzip dont-vary
SetEnvIfNoCase Request_URI \.pdf$ no-gzip dont-vary

这将压缩除图像(gif,jpg和png)之外的所有文件,已经压缩的文件(如zip和tar.gz)和PDF文件,这是有道理的,因为压缩这些文件类型并不大。

2.3其他配置指令

无论您是否使用2.1或2.2中的配置,您应该将这些行添加到配置中:

BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html

这些行是针对不支持压缩HTML文件以外的其他旧版浏览器的。

配置现在完成,您现在必须重新启动Apache2。 在Debian上,你这样做:

/etc/init.d/apache2 restart

要了解更多配置指令,请查看Apache Module mod_deflate

3测试

为了测试我们的压缩,我们向我们的mod_deflate配置添加了一些指令,用于记录传送文件的压缩比。 打开你的mod_deflate配置并添加以下行:

DeflateFilterNote Input input_info
DeflateFilterNote Output output_info
DeflateFilterNote Ratio ratio_info
LogFormat '"%r" %{output_info}n/%{input_info}n (%{ratio_info}n%%)' deflate
CustomLog /var/log/apache2/deflate_log deflate

确保用Apache2的日志目录替换/ var / log / apache2 。 这可以是/ var / log / httpd/ var / log / httpd2

然后重新启动Apache2。 在Debian上,这样做:

/etc/init.d/apache2 restart

现在每当一个文件被请求,这将被记录在/ var / log / apache2 / deflate_log (或任何您更改的文件)。 典型的日志行如下所示:

"GET /info.php HTTP/1.1" 7621/45430 (16%)

你看到文件info.php被请求和传递。 其原始尺寸为45430字节,被压缩为7621字节或原始大小的16%! 这是一个很好的结果,如果您的网站主要由HTML,文本和XML文件组成, mod_deflate将为您节省大量流量,而对于具有低带宽连接的用户,您的网站将加载更快。

如果您在测试后不再需要日志记录,则可以撤消第3节中的更改并重新启动Apache2。

4链接

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏