如果你的网站是php的,通过下面的方法将能加速你网站的访问速度,无论加速多少,哪怕是0.01秒,你的网站在用户体验上就更进了一步。
在尝试用如下方法前请为你的FirrFox(没有FireFox?移步前往)装上由Yahoo开发的YSlow插件(YSlow是什么?),然后用它分析一下你网站现在的分值是多少.切入正题,开始gzip压缩(本文以压缩css文件为例).
第一步,建立压缩所需的php文件
复制如下代码,保存到要压缩的css文件同目录,命名为css.php,名称可根据你自己喜好命名,只要是php文件即可.
<?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调用为:
<
link
rel
=
"
stylesheet
"
media
=
"
screen
"
href
=
"
http://mrthink.net/wp-content/themes/zsofa/style.css
"
/>
gzip压缩后调用方式为:
<
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的值(这个值可以随意取)即可.
用户体验就是从最细微处做起,忘掉自己的行为模式,站在用户的角度为用户着想,你网站的用户体验就做到了一半.
原文发布于Mr.Think的个人博客:http://mrthink.net/ue-php-gzip-function/ 转载请注明.