Home  >  Article  >  Backend Development  >  PHP compression technology_PHP tutorial

PHP compression technology_PHP tutorial

WBOY
WBOYOriginal
2016-07-20 11:05:48803browse

GZIP (GNU-ZIP) is a compression technology. After GZIP compression, the page size can be reduced to 30% or even smaller than the original size. In this way, users will feel refreshed and happy when browsing!
To implement GZIP compressed pages, the browser and the server need to support it. In fact, it is server compression. After it is transmitted to the browser, the browser decompresses and parses it. We don’t need to worry about the browser, because most browsers now support parsing GZIP pages. We just need to compress the page on the server side and then output it to the browser.

It’s a bit wordy, let’s get down to business:
Just like to make compressed biscuits, you must first get the raw materials, and to compress a page, you must first obtain the content to be output. The ob_start() (ob => output buffer) function in PHP can achieve this function. It can first put the content to be output in the program into a place called "buffer". Of course, you can understand it as making compressed cookies. A workbench for temporarily placing raw materials.
This function must be used before the page is output, so it is generally placed at the top of the code. Because it is like a workbench, you have to prepare it before the raw materials arrive, otherwise there will be no place to put the raw materials when they arrive, and problems will occur. After using ob_start() to get the page to be compressed, we can make compressed cookies. No, the page should be compressed! But it seems that there is still a lack of a compressor, EZ. We use the zlib extension of PHP to make one:

Code:
<font face="Youyuan"> Function OB_GZIP ($ Content) // $ Content is the page content to be compressed, or biscuit raw materials <code id="code0"><font face="幼圆">function ob_gzip($content) // $content 就是要压缩的页面内容,或者说饼干原料<br>{    <br>    if(    !headers_sent() && // 如果页面头部信息还没有输出<br>        extension_loaded("zlib") && // 而且zlib扩展已经加载到PHP中<br>        strstr($_SERVER["HTTP_ACCEPT_ENCODING"],"gzip")) //而且浏览器说它可以接受GZIP的页面 <br>    {<br>        $content = gzencode($content." n//此页已压缩",9); 为准备压缩的内容贴上“//此页已压缩”的注释标签,然后用zlib提供的gzencode()函数执行级别为9的压缩,这个参数值范围是0-9,0表示无压缩,9表示最大压缩,当然压缩程度越高越费CPU。<br>        <br>        //然后用header()函数给浏览器发送一些头部信息,告诉浏览器这个页面已经用GZIP压缩过了!<br>        header("Content-Encoding: gzip"); <br>        header("Vary: Accept-Encoding");<br>        header("Content-Length: ".strlen($content));<br>    }<br>    return $content; //返回压缩的内容,或者说把压缩好的饼干送回工作台。<br>}</font> {

if (! Headers_sent () && // If the head information on the page has not output

Extension_Loaded "zlib") && // And the zlib extension has been loaded into PHP
        strstr($_SERVER["HTTP_ACCEPT_ENCODING"], "gzip")) // And the browser says it can accept GZIP pages
                  🎜>        $content = gzencode($content." n//This page has been compressed",9); Attach the comment label "//This page has been compressed" to the content to be compressed, and then use gzencode() provided by zlib The function performs compression with level 9. The value range of this parameter is 0-9, 0 means no compression, and 9 means maximum compression. Of course, the higher the degree of compression, the more CPU is consumed. <font face="幼圆">ob_start('ob_gzip'); //没错,就是给ob_start()加一个参数,参数名就是我们刚才做的“压缩机”的函数名。这样当内容进入缓冲区后PHP就会调用ob_gzip函数把它压缩了。</font>                                                                                                                                                                                                       // Then use the header() function to send some header information to the browser, telling the browser that this page has been compressed with GZIP!

header("Content-Encoding: gzip");

header("Vary: Accept-Encoding");
header("Content-Length: ".strlen($content));
}<font face="幼圆">ob_end_flush(); //结束缓冲区,输出内容。当然,不用这个函数也行,因为程序执行到最后会自动将缓冲区内容输出。</font> Return $content; //Return the compressed content, or send the compressed cookies back to the workbench.

}

After the compressor is ready, we put the compressor on the workbench, so the original ob_start() becomes Code:Okay, all the work is done, final delivery: Code: The complete example is as follows:
Code:
<font face="幼圆"><?php<br />//启用一个带有ob_gzip压缩机的工作台<br />ob_start('ob_gzip');<br />//准备一些待压缩的内容<br />for($i=0; $i<100; $i++)<br />{<br /> echo('这里是压缩饼干的原料,这里是压缩饼干的原料,原料');<br />}<br />//输出压缩成果<br />ob_end_flush();<br />//这是ob_gzip压缩机<br />function ob_gzip($content) <br />{ <br /> if( !headers_sent() && <br /> extension_loaded("zlib") && <br /> strstr($_SERVER["HTTP_ACCEPT_ENCODING"],"gzip")) <br /> {<br /> $content = gzencode($content." n//此页已压缩",9); <br /> <br /> header("Content-Encoding: gzip"); <br /> header("Vary: Accept-Encoding");<br /> header("Content-Length: ".strlen($content));<br /> }<br /> return $content; <br />}<br />?></font>

After actual testing, if GZIP is not used in the above code, it is 4.69KB=4802.56B. After enabling GZIP, it is reduced to 104B , uh... I may not be good at math , calculate for yourself how many percent it has been compressed to its original size. .


www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/445080.htmlTechArticleGZIP (GNU-ZIP) is a compression technology. After GZIP compression, the page size can be reduced to 30% or even smaller than the original size. In this way, users will feel refreshed and happy when browsing! To achieve GZ...
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn