Home >Backend Development >PHP Tutorial >PHP file compression zlib.output_compression and ob_gzhandler, _PHP tutorial

PHP file compression zlib.output_compression and ob_gzhandler, _PHP tutorial

WBOY
WBOYOriginal
2016-07-13 10:18:541088browse

php file compression zlib.output_compression and ob_gzhandler,


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...





http://www.bkjia.com/PHPjc/879487.html

www.bkjia.com

http: //www.bkjia.com/PHPjc/879487.htmlTechArticlephp file compression zlib.output_compression and ob_gzhandler, source of the problem: ThinkPHP3.1.3_fullThinkPHPLibCoreApp.class.php in init() Method if(C('OUTPUT_ENCODE')){ $zlib = ini_...
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