在网站建设中,为提高访问速度,提高页面传送速度是一种可行的方法,通过压缩页面大小后传输可显著提高页面访问速度。一般情况下都是通过服务器端配置apache module_gzip模块(<apache2.0)或mod_deflate模块(>apache2.0)实现支持gzip压缩来完成。PHP本身也提供了使用zlib扩展来对页面进行gzip压缩输出的方法,下面通过实例详细说明php zlib的使用方法。
zlib与gzip的区别
zlib是一个通用的压缩开源库,又是一种数据压缩格式,gzip也是一种数据压缩格式,zlib库默认的压缩方法并不是gzip,而是zlib的,因此使用zlib压缩得到gzip格式的数据,通常使用zlib提供的gz***系列函数实现。
php zlib安装
在使用zlib之前首先需要安装php zlib扩展,我是在Windows下进行PHP环境搭建,默认已支持zlib的使用,如果你的PHP环境不支持zlib的使用,请下载zlib的DLL扩展文件放置到PHP.INI配置文件中extension_dir设定的目录下并加载zlib扩展并重启服务器即可。
使用php zlib实现页面gzip压缩输出的原理
我们知道要想实现php gzip压缩输出,首先需要有需要有输出的内容,其次对内容压缩后输出,而PHP的缓存开启函数ob_start正好可以用来首先存放需要压缩的内容,然后使用php zlib进行gzip算法压缩后输出。
使用php zlib实现页面gzip压缩输出的方法
1、创建一个包含如下HTML文件内容的PHP文件,命名为php-zlib.php
1
2 3 4 5 6 7 8 9 10 |
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <title>PHP网站开发教程网-安装使用php zlib扩展实现页面gzip压缩输出实例教程 </title> </head> <body> PHP网站开发教程网www.leapsoul.cn-安装使用php zlib扩展实现页面gzip压缩输出实例教程 </body> </html> |
2、php zlib扩展加载,开启PHP缓存区对页面进行gzip压缩
在页面头部添加如下代码
1
2 3 4 5 6 7 8 |
<?php
if ( extension_loaded ( "zlib" ) && strstr ( $_SERVER [ "HTTP_ACCEPT_ENCODING" ] , "gzip" ) ) { ob_start ( "ob_gzhandler" ) ; } else { echo "php zlib使用失败,请确认是否已加载zlib扩展" ; exit ( ) ; } ?> |
php zlib使用知识点:
1、使用extension_loaded函数判断php zlib扩展是否已加载,并通过$_SERVER["HTTP_ACCEPT_ENCODING"]获取头部信息判断是否支持php gzip压缩。PHP环境变量$_SERVER和系统常量详细说明
2、通过ob_start(”ob_gzhandler”)告知对缓存区的内容使用ob_gzhandler函数进行压缩以得到gzip压缩格式的数据,如果客户端不支持压缩的页面则此函数返回false。
3、输出缓存并关闭缓存
在页面尾部添加如下代码
1
2 3 4 5 |
至此,最简单的使用php zlib扩展实现页面gzip压缩的工作就完成了,下面使用YSlow插件可以看到原本此页面大小为0.4k,经过使用php gzip压缩后大小为0.3k。除了使用ob_gzhandler内置函数进行gzip压缩外,结合php zlib扩展提供的gzencode()函数可自定义压缩函数进行更大比例的压缩,更多php zlib扩展的使用方法下次再介绍。