Php html压缩问题
我的服务器负载有问题。我检查了我所有的查询和其他东西,但它们都很好。最后我发现问题出在这个函数上Php html压缩问题,php,Php,我的服务器负载有问题。我检查了我所有的查询和其他东西,但它们都很好。最后我发现问题出在这个函数上 function compress($buffer) { $buffer = str_replace("\t", '', $buffer); return $buffer; } ob_start("ob_gzhandler"); ob_start("compress"); 当我删除该功能时,负载恢复正常 任何关于这个问题的想法 问候 ob_start("ob_gzhan
function compress($buffer) {
$buffer = str_replace("\t", '', $buffer);
return $buffer;
}
ob_start("ob_gzhandler");
ob_start("compress");
当我删除该功能时,负载恢复正常
任何关于这个问题的想法
问候
ob_start("ob_gzhandler");
此方法依赖于Apache服务器,此外,必须安装并加载mod_gzip模块。在使用压缩时请记住,服务器上的压缩只有在浏览器请求压缩内容时才会激活,如果浏览器不理解压缩内容或不请求压缩内容,服务器只会服务器普通的、未压缩的内容
上面提到的方法快速而简单,但缺点是它只能在带有mod_gzip的Apache上工作。不仅如此,根据Php手册,这不是gzip的首选方法
默认情况下,压缩级别设置为6。更高的压缩级别意味着服务器CPU上的负载更大。您可能希望对这些级别进行实验,以找到一个值,该值将为您提供良好的压缩,从而在服务器上获得可接受的负载量
要更改压缩级别,只需在ob_start(“ob_gzhandler”)之前插入以下行:
还有一件事,如果您使用的是PHPgzip,请记住关闭压缩,如果gzip没有关闭,则有时会导致服务器负载。使用ob_end_Flush将输出刷新到浏览器
ob_end_flush();
建议使用GZip connect:
方法1:
如果您要对所有页面进行压缩,那么我建议使用.htaccess方法,因为它非常容易实现,并且通过.htaccess文件,您可以进一步配置服务器配置。现在要启用gzip压缩,请在.htaccess文件中添加以下行
php_value output_handler ob_gzhandler
方法2:
通过PHP优化方式使用Gzip的正确方法是:
// Include this function on your pages
function print_gzipped_page() {
global $HTTP_ACCEPT_ENCODING;
if( headers_sent() ){
$encoding = false;
}elseif( strpos($HTTP_ACCEPT_ENCODING, 'x-gzip') !== false ){
$encoding = 'x-gzip';
}elseif( strpos($HTTP_ACCEPT_ENCODING,'gzip') !== false ){
$encoding = 'gzip';
}else{
$encoding = false;
}
if( $encoding ){
$contents = ob_get_contents();
ob_end_clean();
header('Content-Encoding: '.$encoding);
print("\x1f\x8b\x08\x00\x00\x00\x00\x00");
$size = strlen($contents);
$contents = gzcompress($contents, 9);
$contents = substr($contents, 0, $size);
print($contents);
exit();
}else{
ob_end_flush();
exit();
}
}
// At the beginning of each page call these two functions
ob_start();
ob_implicit_flush(0);
// Then do everything you want to do on the page
echo 'Hello World';
// Call this function to output everything as gzipped content.
print_gzipped_page();
希望这能解决您的服务器加载问题。摆脱
compress
功能,它毫无意义。这两个处理程序中的哪一个导致了问题?我也不明白,它应该怎么做?你到底得到了什么错误?Apache{debug,error}.log中有什么东西吗?有没有一些非UTF编码的打字错误?你不是用相同的名字重新定义函数吗?用更多的相关信息更新你的问题。服务器信息、调试日志和任何您可以的信息。
// Include this function on your pages
function print_gzipped_page() {
global $HTTP_ACCEPT_ENCODING;
if( headers_sent() ){
$encoding = false;
}elseif( strpos($HTTP_ACCEPT_ENCODING, 'x-gzip') !== false ){
$encoding = 'x-gzip';
}elseif( strpos($HTTP_ACCEPT_ENCODING,'gzip') !== false ){
$encoding = 'gzip';
}else{
$encoding = false;
}
if( $encoding ){
$contents = ob_get_contents();
ob_end_clean();
header('Content-Encoding: '.$encoding);
print("\x1f\x8b\x08\x00\x00\x00\x00\x00");
$size = strlen($contents);
$contents = gzcompress($contents, 9);
$contents = substr($contents, 0, $size);
print($contents);
exit();
}else{
ob_end_flush();
exit();
}
}
// At the beginning of each page call these two functions
ob_start();
ob_implicit_flush(0);
// Then do everything you want to do on the page
echo 'Hello World';
// Call this function to output everything as gzipped content.
print_gzipped_page();