向客户端浏览器发送压缩后的数据(gzip)
2017-04-26 15:06
162 查看
当向客户端浏览器发送一个较大的Html页面或者大的文件时,会占用较大的网络带宽,使得客户端的响应速度下降。使用压缩方式,将大的文件先压缩,然后再发送,可以降低网络的带宽。
当向客户端浏览器发送数据时,大致传输过程如下:
函数介绍:
将字符串数据经过gzip方式压缩后并返回。
data:想要被压缩的数据
level:压缩的等级0(最低)-9(最高)
此函数将打开输出缓冲。当输出缓冲激活后,脚本将不会输出内容(除http标头外),相反需要输出的内容被存储在内部缓冲区中。
可选参数 output_callback 函数可以被指定。 此函数把一个字符串当作参数并返回一个字符串。 当输出缓冲区被( ob_flush(), ob_clean() 或者相似的函数)冲刷(送出)或者被清洗的时候;或者在请求结束之际输出缓冲区内容被冲刷到浏览器的时候该函数将会被调用。 当调用 output_callback 时,它将收到输出缓冲区的内容作为参数 并预期返回一个新的输出缓冲区作为结果,这个新返回的输出缓冲区内容将被送到浏览器。 如果这个 output_callback 不是一个可以调用的函数,此函数 会返回 FALSE
为ob_start指定一个自定义函数:函数内部实现对缓存区的数据进行调用gzencode函数处理,即可实现对数据的压缩过程。
测试示例:
当向客户端浏览器发送数据时,大致传输过程如下:
函数介绍:
string gzencode ( string $data [, int $level = -1 [, int $encoding_mode = FORCE_GZIP ]] )
将字符串数据经过gzip方式压缩后并返回。
data:想要被压缩的数据
level:压缩的等级0(最低)-9(最高)
bool ob_start ([ callback $output_callback [, int $chunk_size [, bool $erase ]]] )
此函数将打开输出缓冲。当输出缓冲激活后,脚本将不会输出内容(除http标头外),相反需要输出的内容被存储在内部缓冲区中。
可选参数 output_callback 函数可以被指定。 此函数把一个字符串当作参数并返回一个字符串。 当输出缓冲区被( ob_flush(), ob_clean() 或者相似的函数)冲刷(送出)或者被清洗的时候;或者在请求结束之际输出缓冲区内容被冲刷到浏览器的时候该函数将会被调用。 当调用 output_callback 时,它将收到输出缓冲区的内容作为参数 并预期返回一个新的输出缓冲区作为结果,这个新返回的输出缓冲区内容将被送到浏览器。 如果这个 output_callback 不是一个可以调用的函数,此函数 会返回 FALSE
为ob_start指定一个自定义函数:函数内部实现对缓存区的数据进行调用gzencode函数处理,即可实现对数据的压缩过程。
测试示例:
//启用压缩 if(function_exists('ob_gzip')) { ob_start('ob_gzip'); } //ob_start的回调函数 function ob_gzip ($content) { if( !headers_sent() && extension_loaded ("zlib") && strstr ( $_SERVER["HTTP_ACCEPT_ENCODING"], "gzip")){ $content = gzencode($content,9); header ("Content-Encoding: gzip"); header ("Content-Length: ".strlen ($content)); } return ($content) ; } //准备一些待压缩的内容 header("Content-Type:application/pdf"); $content = file_get_contents("./test.pdf"); echo $content; //输出缓冲区数据 ob_end_flush();
相关文章推荐
- net控件中数据导到Excel的格式 首先,我们了解一下excel从web页面上导出的原理。当我们把这些数据发送到客户端时,我们想让客户端程序(浏览器)以excel的格式读取它,所以把mime类型设为:application/vnd.ms-excel,当excel读取文件时会以每个cell的格式呈现数据,如果cell没有规定的格式,则excel会以默认的格式去呈现该cell的数据。这样就给我们提供了自定义数据格式的空间,当然我们必须使用excel支持的格式。下面就列出常用的一些格式: 1) 文本
- 浏览器提示ERR_CONTENT_DECODING_FAILED,Gzip压缩数据无法解压
- 发送异步请求获取数据时,不使用客户端浏览器缓存
- 使用GZIP压缩的方式向客户端传输响应数据
- 以Gzip的形式通过服务器向客户端发送数据
- 介绍一款chrom浏览器插件 DHC是一款使用chrome模拟REST客户端向服务器发送测试数据的谷歌浏览器插件
- 服务器端压缩发送数据到客户端ASP.NET MVC
- 用gzip方式进行压缩数据,解压缩数据
- C# 视频监控系列(5):客户端——给服务器端发送字符串和录像(数据捕获)
- 关于TCP服务器端与客户端数据发送的问题
- socket通信,TCP协议,有多个客户端,服务器怎么向指定IP及端口的客户端发送数据!
- 启用Gzip压缩(IIS)提高客户端网站访问速度
- 在IIS中使用Gzip压缩后传送数据
- android客户端使用网络数据压缩
- QT中用udp客户端发送消息,丢失数据的情况以及处理!
- JAVA编码转换的详细过程理解—>浏览器和服务器的接收和发送数据的编码
- [ACE程序员教程笔记]UDP数据发送客户端
- Asp.net Socket 客户端(发送和接收数据
- 利用Json向客户端发送数据
- 使用服务端事件委托机制来防止页面重复提交数据或客户端浏览器使用(F5)刷新提交数据