月亮代表我的心

个人博客,跟月亮无关,跟代表无关,无关谁的心

使用GZIP压缩网页内容,节约空间(GoDaddy)流量,加快访问速度

GoDaddy Deluxe Hosting – Linux 空间不支持mod_gzip、mod_deflate模块,若想通过GZIP压缩网页内容,可以考虑两种方式,开启zlib.output_compression或者通过ob_gzhandler编码的方式。

zlib.output_compression是在对网页内容压缩的同时发送数据至客户端,ob_gzhandler是等待网页内容压缩完毕后才进行发送,相比之下前者效率更高,但需要注意的是,两者不能同时使用,只能选其一,否则将出现错误。

本文仅针对GoDaddy Deluxe Hosting – Linux 空间,对两者的实现方式做简单描述。

在默认情况下,zlib.output_compression是关闭的,如需开启需编辑php5.ini文件,加入以下内容:

zlib.output_compression = On
zlib.output_compression_level = 6

然后将php5.ini上传到FTP根目录下,剩下的事请就是等待它生效,这可能需要一段时间,可以通过phpinfo()函数检测结果:

Directive Local Value Master Value
zlib.output_compression On On
zlib.output_compression_level 6 6

当zlib.output_compression的Local Value和MasterValue的值同为On时,表示已经生效,这时候访问的PHP页面(包括伪静态页面)已经GZIP压缩了,通过Firebug或者在线网页GZIP压缩检测工具可检测到压缩的效果。

如果需要使用ob_gzhandler,则需关闭zlib.output_compression,把php5.ini文件内容更改为:

zlib.output_compression = Off
zlib.output_compression_level = -1

ob_gzhandler是GoDaddy官网推荐的用法,通过在PHP文件中插入相关代码实现GZIP压缩,以下是GoDaddy帮助中心所提到的:

GZIP Compression

Smaller pages load faster, regardless of your Internet connection speed. You can make your pages smaller by compressing them with GZIP. For more information about GZIP and our hosting, see Compressing Web Pages for Faster Load Times.

《Compressing Web Pages for Faster Load Times》文中提到,将以下PHP代码加入到PHP文件顶部,即可实现GZIP压缩。

1
2
3
4
5
6
<?php
if (substr_count($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip'))
ob_start("ob_gzhandler");
else
ob_start();
?>

不管是zlib.output_compression还是ob_gzhandler,都仅能对PHP文件进行GZIP压缩,对于HTML、CSS、JS等静态文件只能通过调用PHP的方式实现,可以参照文章《加速blog:GZIP压缩传输你的文件》中的“静态文本调用PHP压缩模块实现GZIP压缩效果”。

最后想说的是,现在主流的浏览器默认使用的是HTTP1.1协议,基本都支持GZIP压缩,对于IE而言,假如你没有选中其菜单栏工具->Internet 选项->高级->HTTP 1.1 设置->使用 HTTP 1.1,那么,你将感受不到网页压缩后的速度提升所带来的快感!

点赞
  1. Pingback: Chibl
  2. 七天说道:

    Godaddy的大面积被枪,你的还能用?

    1. miracle说道:

      现在正用着,偶尔会抽风,但这是天朝这边的线路问题,GoDaddy本身是正常的,抽风的时候用代理可以正常访问。

  3. 杰夫说道:

    这个有用

  4. 小刀说道:

    只用godaddy的玉米,没用空间。学习了

  5. Sleven说道:

    Godaddy Deluxe Hosting是支持Gzip压缩模块的,以前的Apache 1支持mo_gzip,现在的Apache 2支持mo_deflate。

    P.S. 貌似你的评论SPAM在Opera总会误判。。

    1. miracle说道:

      可是我现在用的Godaddy Deluxe Hosting空间Apache仍旧是1.3,设置mod_gzip_on Yes时立马报错,加上判断语句ifModule mod_gzip.c后虽不出错,但很明显mod_gzip并没有启用。
      Opera误判已更正,感谢告知!

      1. Sleven说道:

        呵呵,我另外一个GODADDY空间是Apache2的,支持mod_deflate(不支持mod_gzip),至于GODADDY其它的空间支不支持mod_gzip的,我发邮件问过客服,他们说支持,不过推荐的方法还是你的这种ob_gzhandler方式。

  6. LETCG说道:

    喜欢技术文章 学习了 不过GD的主机还未用过

  7. 9fun说道:

    我主机好像根本不支持php5.ini

  8. 摸了你说道:

    额 技术文 我和别人合租过DH空间 不限流量的 godaddy没用过

  9. 电脑fans说道:

    现在php版本都是4,懒得升级。看见代码有些麻烦,我是直接安了一个gzip插件实现的

  10. 免费网说道:

    真的会快一点吗?

  11. yutoshindo说道:

    又见php5.ini……
    我按照网上的方法修改bluehost主机的内存限制,但是并不管用呢,我恨php5.ini
    T_T

发表评论

电子邮件地址不会被公开。 必填项已用*标注