第一步,建立压缩所需的php文件
复制如下代码,保存到要压缩的css文件同目录,命名为css.php,名称可根据你自己喜好命名,只要是php文件即可.01 | <?php |
02 | /** |
03 | *@a.header(...这一行是设置压缩文件类型的,如果你要压缩js文件就将text/css改成text/javascript |
04 | *@b.include(...此处包含你要压缩的文件,多个按你现在的顺序依次用include("...");调用 |
05 | */ |
06 | if ( extension_loaded ( 'zlib' )){ //检查服务器是否开启了zlib拓展 |
07 | ob_start( 'ob_gzhandler' ); |
08 | } |
09 | header ( "content-type: text/css; charset: utf-8" ); //在这里设置要压缩的文件类型 |
10 | header ( "cache-control: must-revalidate" ); |
11 | $offset = 60 * 60 * 240; //文件的距离现在的过期时间,这里设置为一天 |
12 | $expire = "expires: " . gmdate ( "D, d M Y H:i:s" , time() + $offset ) . " GMT" ; |
13 | header ( $expire ); |
14 | ob_start( "compress" ); |
15 | function compress( $buffer ) { //去除文件中的注释 |
16 | $buffer = preg_replace( '!/\*[^*]*\*+([^/][^*]*\*+)*/!' , '' , $buffer ); |
17 | return $buffer ; |
18 | } |
19 | include ( "style.css" ); //在此处包含你所要压缩的文件,多个请用include包含后依次排列 |
20 | if ( extension_loaded ( "zlib" )){ |
21 | ob_end_flush(); //输出buffer中的内容 |
22 | } |
23 | ?> |
第二步,前台调用
以本站为例. 原CSS调用为:1 | < link rel = "stylesheet" media = "screen" href = "http://mrthink.net/wp-content/themes/zsofa/style.css" > |
gzip压缩后调用方式为:
1 | < link rel = "stylesheet" media = "screen" href = "http://mrthink.net/wp-content/themes/zsofa/css.php?v=100415" > |
需要说明的是,如果你以前有多个css调用,那么,gzip后只须调用一个.当然,前提是你的压缩php文件中包含了所有要调用的css样式表.
第三步,压缩完成,此时用我文章开始提到的YSlow插件再分析一下你的网站,对比一下两次的分值,相信一定会有惊喜.最后,要提醒一点的时,gzip的php文件中设置了缓存时间,如果你改过css文件,传上去后不是即时生效的,生效时间为上述gzip代码中$offset后面设置的值.解决方法其实也很简单,修改css后,同时修改一下样式调用路径中…/css.php?v=100415 100415的值(这个值可以随意取)即可.