网站优化:php实现gzip压缩

如果你的网站是php的,通过下面的方法将能加速你网站的访问速度,无论加速多少,哪怕是0.01秒,你的网站在用户体验上就更进了一步。

在尝试用如下方法前请为你的FirrFox(没有FireFox?移步前往)装上由Yahoo开发的YSlow插件(YSlow是什么?),然后用它分析一下你网站现在的分值是多少。切入正题,开始gzip压缩(本文以压缩css文件为例)。

第一步:建立压缩所需的php文件
复制如下代码,保存到要压缩的css文件同目录,命名为css.php,名称可根据你自己喜好命名,只要是php文件即可。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
/**
*@a.header(...这一行是设置压缩文件类型的,如果你要压缩js文件就将text/css改成text/javascript
*@b.include(...此处包含你要压缩的文件,多个按你现在的顺序依次用include("...");调用
*/
if(extension_loaded('zlib')){//检查服务器是否开启了zlib拓展
    ob_start('ob_gzhandler');
  }
  header ("content-type: text/css; charset: utf-8");//在这里设置要压缩的文件类型
  header ("cache-control: must-revalidate");
  $offset = 60 * 60 * 240;//文件的距离现在的过期时间,这里设置为一天
  $expire = "expires: " . gmdate ("D, d M Y H:i:s", time() + $offset) . " GMT";
  header ($expire);
  ob_start("compress");
  function compress($buffer) {//去除文件中的注释
      $buffer = preg_replace('!/\*[^*]*\*+([^/][^*]*\*+)*/!', '', $buffer);
      return $buffer;
    }
  include("style.css");//在此处包含你所要压缩的文件,多个请用include包含后依次排列
  if(extension_loaded("zlib")){
    ob_end_flush();//输出buffer中的内容
}
?>

第二步:前台调用以本站为例原CSS调用为:

1
2
<link rel="stylesheet" media="screen"
 href="http://www.crazyfrom.com/wp-content/themes/crazyfrom/style.css" />

gzip压缩后调用方式为:

1
2
<link rel="stylesheet" media="screen"
 href="http://www.crazyfrom.com/wp-content/themes/crazyfrom/css.php?v=100415" />

需要说明的是,如果你以前有多个css调用,那么gzip后只须调用一个。当然,前提是你的压缩php文件中包含了所有要调用的css样式表。

第三步:压缩完成
此时用文章开始提到的YSlow插件再分析一下你的网站,对比一下两次的分值,相信一定会有惊喜。
最后,要提醒一点的时,gzip的php文件中设置了缓存时间,如果你改过css文件,传上去后不是即时生效的,生效时间为上述gzip代码中$offset后面设置的值。解决方法其实也很简单,修改css后,同时修改一下样式调用路径中…/css.php?v=100415 100415的值(这个值可以随意取)即可。
用户体验就是从最细微处做起,忘掉自己的行为模式,站在用户的角度为用户着想,你网站的用户体验就做到了一半。

版权所有:为网站而疯狂-给站长一个五星级的家转载请注明来源,谢谢!

已有 1 条评论       我也不甘寂寞

  1. 淘宝网首页/2010-05-13 21:39

    粉丝淘 http://www.fanstao.cn 来踩了!小站不错O(∩_∩)O~ 回击

    #1

我看不过去了,也来两句 返回»  

友情提示:
1、请勿发表色情、违法、商业广告等信息,谢谢。
2、留言想要有头像?请看 “我” 的。