mod_deflate/ob_gzhandler/zlib 横向测试
这篇文章比较了mod_gzip和mod_deflate不同的压缩效果,但现在Apache2主机用到mod_gzip模块不多,因为它自带了mod_deflate。今天我把mod_deflate模块、ob_gzhandler和zlib这3种压缩方式做一个横向测试(ob_gzhandler和zlib的区别),看看它们的压缩强度哪个更高。
* z( {$ k3 z0 w( E
' s6 p9 [: l3 _4 C* V; R Y$ K ?一、服务器配置& U6 p! `& l' q6 N) {# Q
+ E# m/ E! Y; v
操作系统:Ubuntu 6.10 (Edgy Eft) x86 desktop
- B8 R) w" L$ g9 n浏览器:Mozilla/5.0 (X11; U; Linux i686; zh-CN; rv:1.8.1.2) Gecko/20060601 Firefox/2.0.0.2 (Ubuntu-edgy)
: ]% m9 Z( q" R6 Z4 ?7 W3 ZApache版本:2.0.559 _2 V; h* }4 a+ p' `) p
PHP版本:5.1.6
l2 t& T9 d$ @zlib版本:1.2.37 C# C+ a' }- o/ k9 H4 g3 Z
% w% o$ k% @6 x5 s+ u* `
二、3种压缩方式和相应的配置文件设置
! }; _( T9 w% p) l$ k( }, c# Y" J7 v: E
1、使用Apache2的mod_deflate模块 T( T ~/ ^1 n2 D" r" P- F# c' w! Q- U
3 {! D" j0 E$ V9 Fphp.ini设置:
: }% Y4 K5 x" b6 m; ?' @+ c2 Z4 J4 s% Voutput_buffering = Off
! N4 G+ m( `. }. \: Qoutput_handler =" C% S* H8 r, U! i! c0 Y& O* z
zlib.output_compression = Off6 x6 k; j0 N' ~0 e2 [" V& z0 ^8 p I
" T+ Y1 O" H7 n3 `. m! [
apache2.conf设置:
; {# S) C6 Z( t; a9 u: a/ yLoadModule deflate_module /usr/lib/apache2/modules/mod_deflate.so" }5 N& I7 v% g
AddOutputFilter DEFLATE xml php js css
( J3 @1 Y7 U+ ~/ ?+ B# c2 X3 E
* b0 w- T; y; m2、使用输出缓冲方式ob_gzhandler) E- y6 W- Y- x& _+ ]1 o
: f5 ~* r: C# p z, K
php.ini设置:9 M4 w% s2 y$ Q
output_buffering = On, K) V( j# ?5 J
output_handler = ob_gzhandler/ i# T% ^9 K Q. `4 J7 ~; `& I
zlib.output_compression = Off
- s/ v; D, K$ t
, O2 k( R; k3 \7 l7 ]apache2.conf设置:5 o$ S# S) P6 k' E3 n
#LoadModule deflate_module /usr/lib/apache2/modules/mod_deflate.so) s. T) H8 l4 m
#AddOutputFilter DEFLATE xml php js css
( Y+ u" r1 K8 E. K. p) E: C& n! e: m& N: ]( w1 x9 V
3、使用内置的zlib压缩方式(默认6级)7 }! \3 p+ T3 L/ N9 o
; N3 E5 x/ b! ^' }3 qphp.ini设置:
" ^ L% M) a1 `7 u, ?1 ooutput_buffering = Off
5 i# ~4 X, B: {2 noutput_handler = f' L9 ~$ Y, O0 p2 N
zlib.output_compression = On
2 O" O6 v5 g1 ?* Z7 H
7 D* s1 K" y+ M7 O+ hapache2.conf设置:/ r: u, n* r3 Y! s0 u
#LoadModule deflate_module /usr/lib/apache2/modules/mod_deflate.so
9 b/ K3 d9 m/ S0 I1 e#AddOutputFilter DEFLATE xml php js css
8 y/ C3 _% D( Y( K! k) E& o, T* R" j
三、3个待测文件5 P2 C( s+ t. S# D: D
sitemap.xml 128.305kb
5 O' _1 S5 `" ?, F9 `/ F9 Q" t, E- Kprototype.js 55.185kb+ A% x4 o& B4 Y7 x- d
style.css 13.810kb( W% R2 F! |! m" a
* _( e, F+ f8 P( p2 [/ I, b% h" a四、测试结果 O3 e. O; \$ i
1 T% r ~) x! N4 g% S' {2 e# u) V7 v7 N由于后面2种方式不能直接对xml/js/css进行压缩,我把这个3个文件都加上了.php后缀。& \7 d; [4 ^+ f9 H3 a7 B
, m/ M4 x- W$ x$ U/ J- U- M
测试数据如下:
) u, @+ X# D5 T$ m1 K' F. t, S$ a8 X9 M! s, t# X
! ] g3 a$ Y3 G& B4 b从测试结果来看,它们几个压缩率相差很小,可能都是采用gzip数据格式压缩的原因,只是工作方式不同而已。采用Apache的mod_deflate模块压缩率最高,使用9级的zlib压缩也不能和它相比,那么mod_deflate的优势就是通过简单的设置,就可以压缩多种数据格式的文件。nowa说道“css改php然后gzip”这种做法不好,我没有测试过一个20k的CSS不压缩和改成php然后gzip,到底哪个效果好?但我知道20k的css通过mod_deflate直接压缩是最好的。无论采用哪种方式,只要有压缩就需占用服务器资源,像163、sina这些大站都是采用静态化加gzip输出的。
附件: 您所在的用户组无法下载或查看附件