如何用PHP实现页面的GZIP压缩输出

html-css023

如何用PHP实现页面的GZIP压缩输出,第1张

第一步,你需要对php的设置如下:

php.ini: output_buffering = Off output_handler = ob_gzhandler zlib.output_compression = Off zlib.output_compression_level = -1

第二步,你需要在apache下增加如下设置:

AddOutputFilter DEFLATE html php js css

这样就可以对html php js css进行gzip压缩了。

第三步,你需要使用如下php压缩html并输出到客户端的函数:

function compress_html($string) { return ltrim(rtrim(preg_replace(array("/>*([^ ]*) *</","//","'/\*[^*]*\*/'","/\r\n/","/\n/","/\t/",'/>[ ]+</'), array(">\\1<",'','','','','','><'),$string)))}

上面的这个正则表达式,很强大的哦,经过我本人亲自测试可使用。

通过以上方法,你就可以将你的html代码压缩然后输出给客户端了。不信你可以查看源代码,就是一行,网页瞬间压缩很小。

IIS6.0启用Gzip压缩的方法:

1、新建Web服务扩展(如下图)

dll路径:“c:windowssystem32inetsrvgzip.dll”,然后启用。

2、网站服务中开启HTTP压缩支持(如下图)

临时目录需要给IIS用户读写权限。

3、修改IIS配置文件MetaBase.xml

文件路径:“c:windowssystem32inetsrv”(请先备份至他处),打开后搜索“HcDynamicCompressionLevel”,并修改(确定已备份)“Compression/deflate”和“Compression/gzip”两个片段的内容。下面的图n和图b所修改的内容用意是将js、css和php加入到压缩的范畴,数字9代表压缩等级。

(图n)

(图b)

4、重启IIS服务使之生效

——————————————————分分割割—————————————————

Apache启用Gzip压缩的方法:

1、开启模块并添加配置项目

a、vi /etc/httpd/conf/httpd.conf

b、查找LoadModule (/LoadModule),加入“LoadModule deflate_module modules/mod_deflate.so”这行

c、添加配置项目(下段内容)

复制代码代码如下:

<IfModule mod_deflate.c>

# 压缩等级 9

DeflateCompressionLevel 9

# 压缩类型 html、xml、php、css、js

SetOutputFilter DEFLATE

AddOutputFilterByType DEFLATE text/html text/plain text/xml application/x-javascript application/x-httpd-php

AddOutputFilter DEFLATE js css

</IfModule>

2、重启apache使之生效

service httpd start

——————————————————分分割割—————————————————

检测是否支持Gzip

END

注意事项

1. 在编辑MetaBase.xml前需要停止IIS,可以使用 net stop iisadmin

2. 修改完成后开启iisadmin服务,并执行iisreset命令

关于SEO的测试

压缩是否对SEO有影响,经测试,开启后仍然可以被很好的收录。

最简单的:写个php用正则表达式把css、js里面的空格删掉,现成的有:php JSMin

复杂点的:PHP有GZip模块,可以把服务器端的资源压缩后发送到客户端再解压,网上教程很多,自行百度

再高端点的:YUI Compressor之类的牛人团队开发的玩意

实际上日流量没有十来万以上的网站,弄这些玩意根本没意义。