如何配置 Apache2 来支持HTTP 压缩?
答案1
这需要deflate
模块,因此请启用它。在 Ubuntu(我正在使用)下,该命令是a2enmod deflate
。
然后,使用SetOutputFilter
你的Proxy
或Directory
指令:
<ProxyMatch "^http://localhost:8080/($|app/)">
Order allow,deny
Allow from all
SetOutputFilter Deflate
</ProxyMatch>
或者:
<Directory /var/www>
Order allow,deny
Allow from all
SetOutputFilter Deflate
</Directory>
答案2
作为您链接到的维基百科条目的注释,您可以使用mod_deflate或者mod_gzip. 请参阅此处使用 mod_gzip 的示例,这就是我所使用的。
答案3
<VirtualHost *:80>
...
DeflateBufferSize 16384
DeflateCompressionLevel 5
DeflateMemLevel 9
DeflateWindowSize 15
<Location / >
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css application/x-javascript
</Location>
...
</VirtualHost>
答案4
根据您的部署,将其作为 mod_deflate.conf 放置在 conf.d 或 extras 文件夹中:
# Enable mod_deflate (gzip)
SetOutputFilter DEFLATE
# Do not attempt to compress the following extensions
SetEnvIfNoCase Request_URI \
\.(?:gif|jpe?g|png|swf|flv|zip|gz|tar|mp3|mp4|m4v)$ no-gzip dont-vary
重新启动 apache,mod_deflate 将出现在所有与上述正则表达式不匹配的扩展上,这会减少总体 CPU 开销,因为它可以防止 mod_deflate 尝试压缩您几乎看不到或根本看不到压缩的格式(因为它已经被压缩了)。
要查看具体压缩的内容以及压缩率,请将其放在
# Deflate accurate logging
DeflateFilterNote Input instream
DeflateFilterNote Output outstream
DeflateFilterNote Ratio ratio
LogFormat '"%r" %{outstream}n/%{instream}n (%{ratio}n%%)' deflate
CustomLog logs/yourdomain_deflate.log