阳光曾经写在以前的文章中写过“开启GZIP压缩功能为wordpress提速”来加速网页的显示速度不过对于CSS和JS,默认是不进行压缩的,之后阳光为了让它也对JS和CSS进行压缩从网上找了很多资料,终于有一个是能用的的现在分享给大家。
让JS和CSS支持Gzip压缩
- 搜索了一下,有很多方法可以实现,但都有一个严重的BUG,该死的IE6对Gzip的支持不是很好,如果对CSS、JS进行Gzip压缩,会使部分 JS失效或者CSS无法加载,Dream试了下,只要一启用Gzip,Wordpress就处于裸奔状态,CSS完全失效,而且还一大堆JS错误。既然 IE6不支持,那我们就绕过它(惹不起我还躲不起吗?)经过一下午的折腾,终于搞定了这问题。
- 在你网站的根目录下新建一名字为gzip.php的文件,代码如下。代码有点长要拷贝完整才行的。
首先新建GZIP.PHP的文件
| ?php define(‘ABSPATH’, dirname(__FILE__).’/'); $cache = true;//Gzip压缩开关 $cachedir = ‘wp-cache/’;//存放gz文件的目录,确保可写 $gzip = strstr($_SERVER['HTTP_ACCEPT_ENCODING'], ‘gzip’); $deflate = strstr($_SERVER['HTTP_ACCEPT_ENCODING'], ‘deflate’); if(!isset($_SERVER['QUERY_STRING'])) $key=array_shift(explode(‘?’, $_SERVER['QUERY_STRING'])); $filename=ABSPATH.$key; $symbol=’^'; $rel_path=str_replace(ABSPATH,”,dirname($filename)); $cache_filename=ABSPATH.$cachedir.$namespace.$symbol.basename($filename).’.gz’;//生成gz文件路径 $type=”Content-type: text/html”; //默认的类型信息 $ext = array_pop(explode(‘.’, $filename));//根据后缀判断文件类型信息 if($cache) $mtime = filemtime($cache_filename); if( (isset($_SERVER['HTTP_IF_MODIFIED_SINCE']) && array_shift(explode(‘;’, $_SERVER['HTTP_IF_MODIFIED_SINCE'])) == $gmt_mtime)) // 浏览器cache中的文件修改日期是否一致,将返回304 } //读取gz文件输出 } $mtime = mktime(); $content = file_get_contents($filename);//读取文件 header(“Last-Modified:” . $gmt_mtime); if ($fp = fopen($cache_filename, ‘w’)) } if( (isset($_SERVER['HTTP_IF_MODIFIED_SINCE']) && array_shift(explode(‘;’, $_SERVER['HTTP_IF_MODIFIED_SINCE'])) == $gmt_mtime)) } ?> |
然后我们修改.htaccess
在你网站的根目录下的.htaccess中添加以下代码,如果.htaccess不存在则新建一个
| RewriteCond %{HTTP:User-Agent} !MSIE [5-6] RewriteRule (.*.css$|.*.js$) gzip.php?$1 [L] |
- 这段代码的意思是判断当前浏览器是否为IE5-6(虽然现在很少人用IE5,不过为保险起见还是加上吧),如果不是则对CSS/JS启用Gzip压缩。
- 最后我们通过Firefox插件YSlow插件来检测下启用GZIP前后的访问速度。YSlow的使用方式和下载地址在阳光以前的文章中有介绍过的:
YSlow的使用方式请点击这里:用YSlow对网站体检—附中文版下载

我承认,我没有在这在很长一段时间的网页… …不过这是另一种喜悦,看到它是如此的一个重要课题和这么多,甚至专业人士忽略。我感谢您的帮助使人们更加认识到可能出现的问题。
按照这个方法吧我的博客也gzip了一下、效果不是很明显呀,虽然说压缩率达到了60%、不知道什么情况?
Gzip压缩功能相当的强大呀、我的博客压缩到79%了。
gaip压缩后基本上能提高不少的访问速度的
It’s great to read soemihtng that’s both enjoyable and provides pragmatisdc solutions.
gzip压缩功能相当的不错哇、我博客的压缩率达到70%了都
i can has cheeseburger?
来www.hiadmin.org成习惯了,感谢博主的无私奉献
回去改装下我的博客
很好的文章,特来顶一下!!!希望以后有更多精彩的内容
回去改装下我的博客
找了好久才找到你这里来
gzip压缩率还不错了
学习中,回家改造下
为什么我用你的方法压缩的js 和 css 显示都是乱码,乱码之后网页内容是有了,可是效果全没了,只能把压缩又关掉了,杯具了…
好像代码有误哦
嘿嘿,博主你偷学我的方法哦。
试用了一下,还是有效果的,大家支持一下
这个要试试
这样速度的确会快很多
看文章 。。。o(∩_∩)o 哈哈
我收藏啦
朋友推荐我来看看你写了点什么(http://shen.me)
效果明显不
Gzip压缩
是提速的一个重要因素。
我感觉就普通gzip压缩就行了。捣鼓麻烦
不错啊 很好
漂过~
希望能经常过来飘一下
貌似有点复杂!
就两部操作,不复杂的呀?
俺用nginx开启了gzip,不知道和这个用php开启有没有什么区别
nginx也可以的,没有关系。您的空间使用nginx架设的吗,我也想用用nginx捏
是的,用lnmp一键包安装的。感觉还不错,内存占用比较少。
博主换友情链接么??
我的博客,英文站推广交流 http://wobole.cn
PR3,建立2年
真的很抱歉,虽然我比较喜欢网站SEO方面的文章,但是还不能和这方面的博客做友情链接
不过我已经订阅您的博客
呵呵,博主写得很精彩!来看看。
哎呀,以后可要经常来哦
“网站的根目录下的.htaccess”,晕,Windows主机岂不是无望了???= =!
windows的主机基本上没有希望了
wordpress在windows主机上面的支持不是太好,所以还是建议使用linux主机了
能说下具体哪些方面支持不太好呢?一直都在用windows主机,没用过linux,很难体会到……只知道因为不能使用.htaccess,导致防盗链问题一直无法解决
有301的文章吗?最近要改改网站
WordPress众多的JS可以压缩一下了
压缩效果还是不错的