使用PHP ob_start()与Apache Deflate/Gzip压缩内容?
大多数网站都希望压缩内容以节省带宽。但是,对于运行PHP的apache服务器,有两种方法可以做到这一点——或者使用apache。那么在您的服务器上哪一个更快或更容易呢 例如,在PHP中,我在页面开头运行以下函数以启用它:使用PHP ob_start()与Apache Deflate/Gzip压缩内容?,php,apache,gzip,compression,Php,Apache,Gzip,Compression,大多数网站都希望压缩内容以节省带宽。但是,对于运行PHP的apache服务器,有两种方法可以做到这一点——或者使用apache。那么在您的服务器上哪一个更快或更容易呢 例如,在PHP中,我在页面开头运行以下函数以启用它: /** * Gzip compress page output * Original function came from wordpress.org */ function gzip_compression() { //If no encoding was g
/**
* Gzip compress page output
* Original function came from wordpress.org
*/
function gzip_compression() {
//If no encoding was given - then it must not be able to accept gzip pages
if( empty($_SERVER['HTTP_ACCEPT_ENCODING']) ) { return false; }
//If zlib is not ALREADY compressing the page - and ob_gzhandler is set
if (( ini_get('zlib.output_compression') == 'On'
OR ini_get('zlib.output_compression_level') > 0 )
OR ini_get('output_handler') == 'ob_gzhandler' ) {
return false;
}
//Else if zlib is loaded start the compression.
if ( extension_loaded( 'zlib' ) AND (strpos($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip') !== FALSE) ) {
ob_start('ob_gzhandler');
}
}
最重要的是使用Apache(两者都是)。要启用它们,可以向.htaccess文件中添加类似的内容
AddOutputFilterByType DEFLATE text/html text/plain text/xml application/x-httpd-php
由于PHP是一种脚本语言(必须由PHP加载),我认为apache方法将1)更稳定,2)更快。但是假设在现实世界中没有多大用处
毕竟,你会认为,有了巨大的资金支持,窗口已经。。。呃,我们不去那里。我们在跑。。。很多Web服务器,每天处理6000万个uniques。通常这不值得一提,但你的问题似乎基于经验 我们在apache中运行它。不管你选择哪种方法,从另一端出来的东西都是一样的(或者足够接近以至于不重要) 我们选择apache有几个原因:
- 零维护,我们只是打开了它。没有人需要维护一些案例结构
- 性能方面,在我们的测试服务器中,Apache做得稍微好一点
- Apache将输出过滤器应用于所有内容,而不仅仅是PHP。在某些情况下,在同一台服务器上提供其他类型的内容,我们希望压缩.css和.js
或者,如果您使用flush()命令更早地将输出发送到浏览器,并且应用压缩,则可能需要在字符串的末尾填充空格,以说服服务器尽早发送数据 +1:我处理的流量远不如你,但我也更喜欢服务器处理。这里有一两个警告:某些类型的声音文件不应该被压缩,否则媒体播放器会被压缩。这包括带有mp3文件的Windows Media Player。虽然这是Media Player 8的问题,但现在可能已经解决了。通常,我只压缩text/*类型的项目,然后再选择一些内容类型(如application/json)来获取其余内容。