PHP compression technology_PHP tutorial
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 PHPstrstr($_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. .

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics



PHP 8.4 brings several new features, security improvements, and performance improvements with healthy amounts of feature deprecations and removals. This guide explains how to install PHP 8.4 or upgrade to PHP 8.4 on Ubuntu, Debian, or their derivati

Visual Studio Code, also known as VS Code, is a free source code editor — or integrated development environment (IDE) — available for all major operating systems. With a large collection of extensions for many programming languages, VS Code can be c

If you are an experienced PHP developer, you might have the feeling that you’ve been there and done that already.You have developed a significant number of applications, debugged millions of lines of code, and tweaked a bunch of scripts to achieve op

This tutorial demonstrates how to efficiently process XML documents using PHP. XML (eXtensible Markup Language) is a versatile text-based markup language designed for both human readability and machine parsing. It's commonly used for data storage an

JWT is an open standard based on JSON, used to securely transmit information between parties, mainly for identity authentication and information exchange. 1. JWT consists of three parts: Header, Payload and Signature. 2. The working principle of JWT includes three steps: generating JWT, verifying JWT and parsing Payload. 3. When using JWT for authentication in PHP, JWT can be generated and verified, and user role and permission information can be included in advanced usage. 4. Common errors include signature verification failure, token expiration, and payload oversized. Debugging skills include using debugging tools and logging. 5. Performance optimization and best practices include using appropriate signature algorithms, setting validity periods reasonably,

A string is a sequence of characters, including letters, numbers, and symbols. This tutorial will learn how to calculate the number of vowels in a given string in PHP using different methods. The vowels in English are a, e, i, o, u, and they can be uppercase or lowercase. What is a vowel? Vowels are alphabetic characters that represent a specific pronunciation. There are five vowels in English, including uppercase and lowercase: a, e, i, o, u Example 1 Input: String = "Tutorialspoint" Output: 6 explain The vowels in the string "Tutorialspoint" are u, o, i, a, o, i. There are 6 yuan in total

Static binding (static::) implements late static binding (LSB) in PHP, allowing calling classes to be referenced in static contexts rather than defining classes. 1) The parsing process is performed at runtime, 2) Look up the call class in the inheritance relationship, 3) It may bring performance overhead.

What are the magic methods of PHP? PHP's magic methods include: 1.\_\_construct, used to initialize objects; 2.\_\_destruct, used to clean up resources; 3.\_\_call, handle non-existent method calls; 4.\_\_get, implement dynamic attribute access; 5.\_\_set, implement dynamic attribute settings. These methods are automatically called in certain situations, improving code flexibility and efficiency.
