PHP使用zlib扩展实现GZIP压缩输出的方法详解

本文实例讲述了PHP使用zlib扩展实现GZIP压缩输出方法分享给大家供大家参考,具体如下:

一般情况下我们出现大量数据传输理希望减少服务器的带宽压力,会采取一种方式来压缩文件传输,PHP中用zlib也可以实现gzip压缩输出,下面我们来看GZIP压缩输出各种方法总结.

GZIP(GNU-ZIP)是一种压缩技术。经过GZIP压缩后页面大小可以变为原来的30%甚至更小。这样用户浏览的时候就会感觉很爽很愉快!

准备工作

1、找不到PHP_zlib.dll文件

PHP4.3开始zlib压缩就已经内置在PHP中了,所以至少Windows环境下是不需要安装zlib的。

2、安装搭建PHP运行环境

由于光通过PHP.ini配置文件开启gzip配置实现PHP gzip压缩输出是不行的,其需要apache的支持,所以建议安装搭建PHP+apache+MysqL运行环境。

PHP gzip配置步骤

一、打开PHP.ini配置文件,找到

rush:bash;"> zlib.output_compression = Off ;zlib.output_compression_level = -1

修改

rush:bash;"> zlib.output_compression = On zlib.output_compression_level = 6

实例1

PHP使用zlib扩展实现页面GZIP压缩输出

代码

rush:PHP;"> function ob_gzip($content) // $content 就是要压缩的页面内容 { if(!headers_sent() && extension_loaded("zlib") && strstr($_SERVER["HTTP_ACCEPT_ENCODING"],"gzip"))//判断页面头部信息是否输出PHP中zlib扩 展是否已经加载,浏览器是否支持GZIP技术 { $content = gzencode($content." n//此页已压缩",9); //为准备压缩的内容贴上"//此页已压缩"的注释标签,然后用zlib提供的gzencode()函数执行级别为9的压缩,这个参数值范围是0-9,0 表示无压缩,9表示最大压缩,当然压缩程度越高越费cpu。 //用header()函数给浏览器发送一些头部信息,告诉浏览器这个页面已经用GZIP压缩过了! header("content-encoding: gzip"); header("vary: Accept-Encoding"); header("Content-Length: ".strlen($content)); } return $content; //返回压缩的内容

函数写好后,就用ob_start调用它,于是原来的ob_start()变成

代码如下:
一个参数,参数名就是刚才的函数名。这样当内容进入缓冲区后PHP就会调用ob_gzip函数把它压缩了。

最后结束缓冲区

代码如下:
输出内容。当然,不用这个函数也行,因为程序执行到最后会自动将缓冲区内容输出

最终完整的实例

rush:PHP;">

实例2

zlib压缩和解压缩swf文件代码

文件的例子:

解压缩swf文件:

实例3

开启PHP zlib(gzip)压缩输出

PHP gzip配置知识点:

1、PHP是不开启zlib整站压缩输出的,而是通过对需要压缩输出页面使用ob_gzhandler函数实现,两者只能二选一,否则会报错。

2、默认值为Off,你可以将其设置为On,或者output buffer size(认为4k)

3、默认推荐设置压缩比值为6,可选范围为1-9,-1代表关闭PHP zlib(gzip)压缩

二、保存PHP.ini配置文件,并重启apache服务器

三、打开apache 配置文件httpd.conf,配置装载

这一步是最关键的开启PHP gzip压缩输出配置步骤,很多网友会说我已经开启了PHP.ini配置文件中的PHP gzip配置怎么还是没有实现PHP gzip压缩,就是因为没有让apache装载方法如下,将

rush:bash;"> #LoadModule deflate_module modules/mod_deflate.so

去除开头的#号,并重启apache即可。

更多关于PHP相关内容感兴趣的读者可查看本站专题:《》、《》、《》、《》、《》、《》、《》及《

希望本文所述对大家PHP程序设计有所帮助。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


服务器优化必备:深入了解PHP8底层开发原理
Golang的网络编程:如何快速构建高性能的网络应用?
Golang和其他编程语言的对比:为什么它的开发效率更高?
PHP8底层开发原理揭秘:如何利用新特性创建出色的Web应用
将字符重新排列以形成回文(如果可能)在C++中
掌握PHP8底层开发原理和新特性:创建高效可扩展的应用程序
服务器性能优化必学:掌握PHP8底层开发原理
PHP8新特性和底层开发原理详解:优化应用性能的终极指南
将 C/C++ 代码转换为汇编语言
深入研究PHP8底层开发原理:创建高效可扩展的应用程序
C++程序查找法向量和迹
PHP8底层开发原理实战指南:提升服务器效能
重排数组,使得当 i 为偶数时,arr[i] >= arr[j],当 i 为奇数时,arr[i] <= arr[j],其中 j < i,使用 C++ 语言实现
Golang的垃圾回收:为什么它可以减少开发人员的负担?
C++程序:将一个数组的所有元素复制到另一个数组中
Golang:构建智能系统的基石
为什么AI开发者应该关注Golang?
在C和C++中,逗号(comma)的用法是用来分隔表达式或语句
PHP8底层开发原理解析及新特性应用实例
利用PHP8底层开发原理解析新特性:如何构建出色的Web应用