Web服务器访问加速–启用Gzip压缩

自从从YO2搬出来之后,就一直觉得博客非常慢,并且通过Google Analyst发现虽然流量在上升,但平均停留时间和跳出率指标均在下降,我想这应该就是网页打开过慢造成的,其实主要原因是服务器响应速度慢,其次就是 网页中脚本太多,文件太大。前者没有办法,因为服务器在美国,并且性能一般,而后者则可以自己调整,之前一直没有时间,今天就好好研究一下。

先考虑网页压缩,通常压缩格式为gzip。我博客主机为LAMP架构,即Linux+ Apache+ MySQL + PHP  ,通过网上查询得知,在Apache中开启gzip压缩方法为:

在httpd.conf 或者博客根目录的.htaccess文件中加入如下规则(Apache服务器需要支持mod_deflate)

<ifmodule mod_deflate.c>
AddOutputFilter DEFLATE html xml php js css
</ifmodule>

或者

<ifmodule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/xml application/x-httpd-php application/x-javascript text/css
</ifmodule>

但 是经过我查看,这样写并不凑效,网页还是没有压缩,和客服联系发现主机的Apache根本就不支持mod_deflate,因此这种方法不成功。但是不要 紧,接着我发现,虽然Apache不支持mod_deflate,但是主机的php却支持zlib,也就是说支持gzip压缩,具体方法见下面描述:
对于静态网页(html,js,css),先设置URL Rewrite:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /blog  #your blog, change when needed.
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^(.*)(js|css|html|htm)$ /gzip.php?file=$1$2&type=$2 [L]
</IfModule>

可以通过URL Rewrite的方式请求这个gzip.php文件 (来自阅薇堂,该文件需要放在”/”目录),这样静态文件的gzip压缩就OK了。

对于由php动态输出的网页,常见的就是wp输出的页面,可以通过一个插件(gzippy
)开实现, 直接到 wp后台,在插件搜索里面输入“gzippy”然后安装即可。gzippy只有一句话:

<?php
function gzippy() {
    ob_start(‘ob_gzhandler’);
}
if(!stristr($_SERVER['REQUEST_URI'], ‘tinymce’) && !ini_get(‘zlib.output_compression’)) {
    add_action(‘init’, ‘gzippy’);
}
?>

这样下来,网页基本上除了图片外,都是经过压缩过的了。接着将几个不经常用的外链js干掉,具体来说就是那个庞大的yahoo media player以及 语法高亮的highlight.js. 干掉两个脚本之后,大功告成,看看优化结果。


                    图1. 浏览器清空缓存后打开网页下载量

                    图2. 不压缩情况下网页打开时间(浏览区缓存已清空)

                    图3. gzip压缩情况下网页打开时间(浏览区缓存已清空)

数据都是经过多次反复测试得出的,基本上能说明问题,可以明显看出,gzip压缩后,访问速度加快了(这不包括服务器响应时间),主要是内嵌javascript经过压缩后省了不少流量。

PS:
1.如果Wordpress 启用了 wp-cache 插件,则需要禁用 gzip 压缩。
2. 网页压缩性能查询工具: Port80

相关日志

本文发表于星期六, 一月 30th, 2010 at 上午 2:13 文章归类于 互联网. 标签: , , .
你可以去 留下评论, 或者 收藏、分享这篇文章!

2 条评论

  1. 我的博客是WP的,安装并且激活了Gzip OUTPUT插件,但是不知道是什么原因,用Febird提供的Port80测试网站提示是没有压缩的……其他的网站有的提示有,有的提示没有……
    我的博客搭在了Megabyet的主机上面,能帮我看看怎么实现Gzip压缩吗?

    [回复]

    febird 回复:

    后台把你的评论当垃圾评论了,不好意思,没有及时回复。
    Gzip OUTPUT插件没有效果的话,那就用我上面提到的两个办法,要么通过Apache的mod_deflate模块在文件层就gzip压缩,要么在通过URL重写让php来帮你压缩。

    [回复]

我有话说

没有自己的个性头像?去搞一个吧,很简单的,只要去Gravtar登记一下就OK啦,绑定Email后就可以在全球使用的。

标注有 黑体 的域是必填的. 你的电子邮件地址是 永远 不会公开或者转交给第三方.

下面的HTML标记可用:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>
URIs 必须书写完整 (例如: http://www.febird.net) 并且所有的标签都应该正确关闭.

换行符与段落标记将自动产生.

大家要注意了,XX言论 可能 会被和谐哦.

关闭
E-mail It