Home >Backend Development >PHP Tutorial >PHP file compression zlib.output_compression and ob_gzhandler, _PHP tutorial
Source of the problem:
ThinkPHP3.1.3_fullThinkPHPLibCoreApp.class.php init() method
if (C('OUTPUT_ENCODE')){
🎜>zlib.output_compression and ob_gzhandler are methods for compressing the intranet of pages.
You cannot use ob_gzhandler() and zlib.output_compression at the same time.
Also note that using zlib.output_compression is preferable to ob_gzhandler().
There are three ways to use the ob_gzhandler function to compress php:
1. Set output_handler = ob_gzhandler in php.ini
2. Add php_value output_handler ob_gzhandler to .htaccess
3. Add ob_start('ob_gzhandler');
zlib.output_compression method:
Open the php.ini file in the php directory and find zlib.output_compression = Off, change it to zlib.output_compression = On,
remove the ";" in front of;zlib.output_compression_level, and change the -1 behind to a value between 1 and 5,
this way you can achieve the gzip effect of all php pages.
The following points need to be noted:
1. ;zlib.output_handler must remain commented out because this parameter conflicts with the previous setting - the official statement.
2. Generally, the cache is 4k (output_buffering = 4096).
3. The recommended parameter value for zlib.output_compression_level is 1~5. With 6, the actual compression effect will not improve much, but the CPU usage will increase geometrically.
example01: ob_gzhandler method processing of IE low version:
<?<span>php </span><span>/*</span><span> The Accept-Encoding header can't be trusted in IE5 and unpatched IE6; there are gzip-related bugs in this browsers. The docs don't mention if ob_gzhandler knows about these, so you might want to use the function below: </span><span>*/</span> <span>function</span><span> isBuggyIe() { </span><span>$ua</span> = <span>$_SERVER</span>['HTTP_USER_AGENT'<span>]; </span><span>//</span><span> quick escape for non-IEs</span> <span>if</span> (0 !== <span>strpos</span>(<span>$ua</span>, 'Mozilla/4.0 (compatible; MSIE '<span>) </span>|| <span>false</span> !== <span>strpos</span>(<span>$ua</span>, 'Opera'<span>)) { </span><span>return</span> <span>false</span><span>; } </span><span>//</span><span> no regex = faaast</span> <span>$version</span> = (<span>float</span>)<span>substr</span>(<span>$ua</span>, 30<span>); </span><span>return</span><span> ( </span><span>$version</span> < 6 || (<span>$version</span> == 6 && <span>false</span> === <span>strpos</span>(<span>$ua</span>, 'SV1'<span>)) ); } </span><span>//</span><span> usage:</span> isBuggyIe() || <span>ob_start</span>("ob_gzhandler"<span>); </span>example02: Processing of css/jss files
<?<span>php </span><span>/*</span><span> It is also possible to use ob_gzhandler to compress css and javascript files, however some browsers such as firefox expect content type text/css on css files. To get around this send a content type header: </span><span>*/</span> <span>ob_start</span>('ob_gzhandler'<span>); </span>?> .... your css content ... <?<span>php </span><span>header</span>("Content-Type: text/css"); <span>//</span><span>或header("Content-Type: text/javascript");</span> <span>header</span>("Content-Length: ".<span>ob_get_length</span><span>()); </span><span>ob_end_flush</span><span>(); </span>
//To be added...
www.bkjia.com