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之类的牛人团队开发的玩意
实际上日流量没有十来万以上的网站,弄这些玩意根本没意义。