Gzip是一种流行的文件压缩算法,现在的应用十分广泛,尤其是在Linux平台。当应用Gzip压缩到一个纯文本文件时,效果是非常明显的,大约可以减少70%以上的文件大小。这取决于文件中的内容。
利用Apache中的Gzip模块,我们可以使用Gzip压缩算法来对Apache服务器发布的网页内容进行压缩后再传输到客户端浏览器。这样经过压缩后实际上降低了网络传输的字节数,最明显的好处就是可以加快网页加载的速度。
网页加载速度加快的好处不言而喻,除了节省流量,改善用户的浏览体验外,另一个潜在的好处是Gzip与搜索引擎的抓取工具有着更好的关系。例如 Google就可以通过直接读取gzip文件来比普通手工抓取更快地检索网页。在Google网站管理员工具(Google Webmaster Tools)中你可以看到,sitemap.xml.gz 是直接作为Sitemap被提交的。
而这些好处并不仅仅限于静态内容,PHP动态页面和其他动态生成的内容均可以通过使用Apache压缩模块压缩,加上其他的性能调整机制和相应的服务器端 缓存规则,这可以大大提高网站的性能。因此,对于部署在Linux服务器上的PHP程序,在服务器支持的情况下,我们建议你开启使用Gzip Web压缩。
配置php.ini文件开启gzip
打开php.ini文件,找到zlib.output_compression = Off
//将
zlib.output_compression = Off
zlib.output_compression_level = -1
//改成
//zlib.output_compression默认值为Off,你可以将其设置为On,或者output buffer size(默认为4k)
zlib.output_compression = On
//zlib.output_compression_level代表压缩比,默认推荐设置压缩比值为6,可选范围为1-9,-1代表关闭php zlib(gzip)压缩
zlib.output_compression_level = 6
注意: 默认php是不开启zlib整站压缩输出的,而是通过对需要压缩输出的页面使用ob_gzhandler函数实现,两者只能二选一,否则会报错。
配置apache开启gzip
//打开apache 配置文件httpd.conf,找到
#LoadModule deflate_module modules/mod_deflate.so
#LoadModule headers_module modules/mod_headers.so
//将#号去掉,开启模块
//增加下列代码
DeflateCompressionLevel 9
AddOutputFilterByType DEFLATE text/html text/plain text/xml application/json application/xml
AddOutputFilter DEFLATE js css
AddOutputFilter INCLUDES .shtml .htm .xml .php .html重启服务即可
通过站长工具即可检测网站是否已经开启gzip,如下图
猿小莫的博客压缩比为61.81%,效果不错,呵呵~~~
图片启用gzip压缩会适得其反
一些开发者使用HTTP压缩那些已经本地已经压缩过的文件,而这些已经压缩过的文件再次被GZip压缩时,是不能提高性能的,表现在如下两个方面。
首先,HTTP压缩需要成本。Web服务器获得需要的内容,然后压缩它,最后将它发送到客户端。如果内容不能被进一步压缩,你只是在浪费CPU做无意义的任务。
其次,采用HTTP压缩已经被过压缩的东西并不能使它更小。事实上,添加标头,压缩字典,并校验响应体实际上使它变得更大。
因此某些开发者使用gzip压缩图片后,反而造成图片体积更大的效果。
文章评论