Total Pageviews

Thursday 1 March 2012

4个完美开启网站Gzip压缩的方法

在Google Page Speed检测中提示博客未开启Gzip压缩功能.

开始找完美开启Gzip压缩的方法.

收集的4个完美开启网站Gzip压缩的方法如下:
方法1.使用Wordpress插件Gzippy

WordPress插件Gzippy,很方便的开启Gzip压缩功能,安装之后启用即可,无需设置,很方便.
下载地址:http://wordpress.org/extend/plugins/gzippy/
方法2.使用自定义的php.ini和.htaccess文件

a. 新建一个文本文件,重命名为 php.ini ,输入以下内容,保存并上传至网站根目录即可。
1    output_buffering = Off
2    output_handler =
3    zlib.output_compression = On
4    zlib.output_compression_level = 6

b.网站根目录下的.htaccess文件内加入以下代码(独占一行):
1    addhandler x-httpd-php5-cgi .php .html .htm .js
方法3.修改代码压缩CSS和JS文件

a.压缩CSS文件

1、把模板目录下的style.css复制一份出来,命名为style.css.php,接着在style.css.php顶部加入这句:
1    < ?php if(extension_loaded('zlib')) {ob_start('ob_gzhandler');} header("Content-type: text/css"); ?>

在最后加上下面代码:
1    < ?php if(extension_loaded('zlib')) {ob_end_flush();} ?>

2、然后修改header.php中的引用CSS文件的路径:
原来的:
1    <link rel="stylesheet" type="text/css" media="screen" href="/style.css"/>

修改后的:
1    <link rel="stylesheet" type="text/css" media="screen" href="/style.css.php"/>

这样,你的CSS就被Gzip压缩了。
b. 同样的方法可以压缩你的JS. 只是在JS的顶部加入的是如下代码:
1    < ?php if ( extension_loaded('zlib') ) {ob_start('ob_gzhandler');} header("Content-Type: text/javascript"); ?>

加入到JS文件最后的代码和CSS文件的一样. 之后再修改主题文件中引用JS文件的路径文件名即可.

提示: 此方法较复杂,不推荐初级用户使用. 切忌在修改的时候要把原来的文件备份一下。省的出现悲剧就晚了。

以上三种开启Gzip压缩的方法,网上传的比较多,但是有一点,都不兼容IE6,下边分享一种兼容IE6的压缩方法:

方法4.通过.htaccess终极启用方法(推荐此方法)

1、下载对应的Gzip.zip文件,解压后上传至网站根目录。

2、修改根目录的.htaccess,加入以下代码,增加gz的识别支援及网址改写:
1    #识别gz格式的文件支持
2    &lt;Files *.js.gz&gt;
3    AddEncoding gzip .js
4    ForceType application/x-javascript
5    &lt;/Files&gt;
6    &lt;Files *.css.gz&gt;
7    AddEncoding gzip .css
8    ForceType text/css
9    &lt;/Files&gt;&lt;IfModule mod_rewrite.c&gt;
10    RewriteEngine On
11    RewriteBase /
12    #wordpress静态网址,如果沒有使用,就略过
13    RewriteCond %{REQUEST_FILENAME} !-f
14    RewriteCond %{REQUEST_FILENAME} !-d
15    RewriteRule . /index.php [L]
16    #读到css和js文件时,就重定向到对应的gzip.php
17    RewriteRule (.*.css$|.*.js$) gzip.php?$1 [L]
18    #读到.css时,判断如果浏览器支持Gzip压缩且.css.gz文件存在,就重定向到压缩的CSS文件
19    RewriteCond %{HTTP:Accept-encoding} gzip
20    RewriteCond %{REQUEST_FILENAME}.gz -f
21    RewriteRule ^(.*).css $1.css.gz [L,QSA]
22    #读到.js,判断如果浏览器支持Gzip且.js.gz文件存在,就重定向到压缩的JS文件
23    RewriteCond %{HTTP:Accept-encoding} gzip
24    RewriteCond %{REQUEST_FILENAME}.gz -f
25    RewriteRule ^(.*).js $1.js.gz [L,QSA]
26    &lt;/IfModule&gt;

3、浏览自己的网站,让CSS和JS产生gz档,并将相应的.gz文件权限设置为777。

4、最后,再次改写.htaccess,把以下代码注释掉或删除:
RewriteRule (.*.css$|.*.js$) gzip.php?$1 [L]

完毕。此Gzip方法是至今我最满意的,效果最显著的,强烈推荐。不过在修改CSS和JS后,还要还原那句代码并重做第3、4步。所以该方法稍有些复杂,比较适合喜欢折腾Wordpress的童鞋们。

目前网上流传的这4个完美开启网站Gzip压缩的方法,收集于此,根据网站空间的功能可能不是每种方法都支持,具体可以尝试不同的方法找到适合自己的。

No comments:

Post a Comment