看代码,有注释讲的很明白。
PHP代码
- <?php
- ob_start('ob_gzip'); //没错,就是给ob_start()加一个参数,参数名就是“压缩机”的函数名。这样当内容进入缓冲区后PHP就会调用ob_gzip函数把它压缩了。
- //准备一些待压缩的内容
- for($i=0; $i<100; $i++)
- {
- echo('这里是压缩饼干的原料,这里是压缩饼干的原料,原料');
- }
- ob_end_flush(); //结束缓冲区,输出内容。当然,不用这个函数也行,因为程序执行到最后会自动将缓冲区内容输出。
- //下面就是压缩机函数
- function ob_gzip($content) // $content 就是要压缩的页面内容
- {
- if(!headers_sent() && // 如果页面头部信息还没有输出
- extension_loaded("zlib") && // 而且zlib扩展已经加载到PHP中
- strstr($_SERVER["HTTP_ACCEPT_ENCODING"],"gzip")) //而且浏览器说它可以接受GZIP的页面
- {
- $content = gzencode($content,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; //返回压缩的内容,或者说把压缩好的饼干送回工作台。
- }
- ?>


