如何使用Lighttpd的mod_compress(Debian Squeeze)来保存流量
在本教程中,我将介绍如何在Lighttpd Web服务器(Debian Squeeze)上配置mod_compress
。 mod_compress
允许Lighttpd压缩文件并将其传递给可以处理大多数现代浏览器所做的压缩内容的客户端(例如浏览器)。 使用mod_compress
,您可以将HTML,CSS,Javascript,文本或XML文件压缩到大约。 20-30%的原始尺寸,从而节省您的服务器流量,使您的调制解调器用户更快乐。
压缩文件会导致服务器负载稍高,但根据我的经验,客户端与服务器的连接时间减少了很多。 例如,需要七秒钟下载未压缩的HTML文件的调制解调器用户现在可能只需要两秒钟的时间才能使用相同但压缩的文件。
通过使用mod_compress,
您不必担心您排除使用旧版浏览器无法处理压缩内容的用户。 浏览器在传输任何文件之前与服务器进行协商,如果浏览器无法处理压缩内容,则服务器将传送未压缩的文件。
我不会保证这将为您工作!
1初步说明
我假设你在Debian Squeeze服务器上有一个工作的Lighttpd设置,例如本教程所示:在Debian Squeeze上安装带有PHP5和MySQL支持的Lighttpd
2启用并配置mod_compress
打开/etc/lighttpd/lighttpd.conf
...
vi /etc/lighttpd/lighttpd.conf
...并检查mod_compress
在server.modules
节中是否处于活动状态(Debian Squeeze默认情况下应该处于活动状态):
server.modules = ( "mod_expire", "mod_access", "mod_alias", "mod_compress", "mod_redirect", # "mod_rewrite", ) [...] |
您还应该在文件的下方找到以下两行:
[...] compress.cache-dir = "/var/cache/lighttpd/compress/" compress.filetype = ("application/x-javascript", "text/css", "text/html", "text/plain") [...] |
compress.cache-dir
指令告诉Lighttpd将压缩文件存储在/ var / cache / lighttpd / compress /目录中
。 compress.filetype
指令告诉Lighttpd要压缩的文件类型(通常是Javascript,CSS,HTML和纯文本文件)。 由于每个服务器上的Javascript文件可能有不同的文件类型,因此我们应该扩展该指令,使其看起来如下所示:
[...] compress.filetype = ("application/x-javascript", "application/javascript", "text/javascript", "text/x-js", "text/css", "text/html", "text/plain") [...] |
接下来请确保目录/ var / cache / lighttpd / compress /
存在并由用户和组www-data拥有
(默认情况下,Debian Squeeze都应为true):
ls -la /var/cache/lighttpd/compress/
root@server1:~# ls -la /var/cache/lighttpd/compress/
total 8
drwxr-xr-x 2 www-data www-data 4096 Nov 12 12:45 .
drwxr-xr-x 4 www-data www-data 4096 Feb 17 17:57 ..
root@server1:~#
如果目录不存在,请按如下所示创建它:
mkdir -p /var/cache/lighttpd/compress/
chown www-data:www-data /var/cache/lighttpd/compress/
现在重启Lighttpd:
/etc/init.d/lighttpd restart
3压缩PHP
PHP本身提供压缩支持,因此这不能被Lighttpd处理。 要启用PHP压缩,请打开/etc/php5/cgi/php.ini
...
vi /etc/php5/cgi/php.ini
...并将zlib.output_compression
设置为On
:
[...] ; Transparent output compression using the zlib library ; Valid values for this option are 'off', 'on', or a specific buffer size ; to be used for compression (default is 4KB) ; Note: Resulting chunk size may vary due to nature of compression. PHP ; outputs chunks that are few hundreds bytes each as a result of ; compression. If you prefer a larger chunk size for better ; performance, enable output_buffering in addition. ; Note: You need to use zlib.output_handler instead of the standard ; output_handler, or otherwise the output will be corrupted. ; http://php.net/zlib.output-compression zlib.output_compression = On [...] |
之后重新启动Lighttpd:
/etc/init.d/lighttpd restart
4清理Lighttpd的压缩目录
Lighttpd存储压缩文件的目录( / var / cache / lighttpd / compress /
默认)应该定期从旧的未使用的文件清除。 在Debian Squeeze上,您应该在/etc/cron.daily/lighttpd
中找到
每天执行此操作的cron工作:
cat /etc/cron.daily/lighttpd
#!/bin/sh # Cleanup lighttpd compress cache cache=/var/cache/lighttpd if test -d "$cache/compress"; then su -s /bin/sh -c "find $cache/compress -type f -atime +30 -print0 | xargs -0 -r rm" www-data fi if test -d "$cache/uploads"; then su -s /bin/sh -c "find $cache/uploads -type f -atime +1 -print0 | xargs -0 -r rm" www-data fi |
这将清除最近30天内未被访问的文件的目录。
如果/etc/cron.daily/lighttpd
不存在,您可以自己创建一个cron作业:
crontab -e
23 4 * * * /usr/bin/find /var/cache/lighttpd/compress -type f -atime +30 -print0 | /usr/bin/xargs -0 -r /bin/rm |
(这个cron工作每天都会在04.23h运行。)
5测试
要测试您的配置是否正常工作,您可以安装Firefox的Live HTTP Headers插件,并通过Firefox访问文本文件(例如静态HTML页面)。 在Live HTTP Headers输出中,您现在应该看到,客户端(Firefox)发送了Accept-Encoding:gzip,deflate
标头来告诉服务器它接受格式为gzip
和deflate的压缩内容
; 服务器应压缩文件并使用Content-Encoding:gzip
标头发送:
如果你检查你的压缩目录/ var / cache / lighttpd / compress /
,你应该看到它不再是空的; 它现在应该包含所请求文件的压缩版本:
ls -la /var/cache/lighttpd/compress/
root@server1:~# ls -la /var/cache/lighttpd/compress/
total 16
drwxr-xr-x 2 www-data www-data 4096 Mar 7 16:32 .
drwxr-xr-x 4 www-data www-data 4096 Feb 17 17:57 ..
-rw------- 1 www-data www-data 3102 Mar 7 16:32 howto.html-gzip-237485-9070-1299510809
-rw------- 1 www-data www-data 1562 Mar 7 16:30 index.lighttpd.html-gzip-237105-3585-1297961821
root@server1:~#
6链接
- Lighttpd mod_compress: http : //redmine.lighttpd.net/wiki/1/Docs : ModCompress
- Firefox的Live HTTP标头插件: https : //addons.mozilla.org/en-us/firefox/addon/live-http-headers/
- Debian: http : //www.debian.org/