GZIP - сжатие

Печать RSS
194

S
Автор
Пришелец
0
Будьте добры расписаный пример.. И вывод.. И если можно какой нибудь мини фак.. Заранее благодарен

Чатланин
0
A

Оранжевые штаны
0
Совершенно неверно. В самом верху страницы, до первой конструкции вывода в браузер (echo, print и т.д.) пишем ob_start('ob_gzhandler'); эта функция сама определит какой тип сжатия поддерживает браузер и поддерживает ли вообще, и отправит сама нужные заголовки и сжатый контент.
A

Оранжевые штаны
0
Можно конечно организовать самому с помощью функций gzdeflate(); gzencode(); или же gzcompress(); самому проверяя какой тип сжатия поддерживает браузер, но с ob_gzhandler самый выгодный вариант...
Изменил: Azzido (23.07.2010 / 00:17)
A

Оранжевые штаны
0
<?php
ob_start('ob_gzhandler');
echo 'Hello, world!';

Оранжевые штаны
0
<?php
ob_start ('ob_gzhandler');
echo 'Hello, world!';
ob_end_flush ();
?>
так будет правильнее
A

Оранжевые штаны
0
Точно, так верней, если конечно implicit flush в htaccess или в других настройках сервера не включена.
A

Оранжевые штаны
0
11, насколько я помню таким способом не проверяется поддерживает ли браузер сжатие, так что с браузера который не поддерживает сжатие твой сайт станет недоступен, я вот например не рискнул эту опцию включить, телефоны все таки, мало ли на коком кирпиче на сайт зайдут, а для web сайта это самое то.
Изменил: Azzido (24.07.2010 / 12:20)
A

Оранжевые штаны
0
<?php
//----------------------- Буферизация и сжатие документа -----------------------//
if(extension_loaded('zlib') and ini_get('zlib.output_compression')<>'On' and ini_get('output_handler')<>'ob_gzhandler' and ini_get('output_handler')<>'zlib.output_compression'){
if(isset($_SERVER['HTTP_ACCEPT_ENCODING'])){$accept_encoding=$_SERVER['HTTP_ACCEPT_ENCODING'];}
elseif(isset($_SERVER['HTTP_TE'])){$accept_encoding=$_SERVER['HTTP_TE'];}
else{$accept_encoding='no_accept_encoding';}
if(strpos($accept_encoding,'gzip')!==FALSE){
function ob_gzencode($buffer){
return gzencode($buffer,1);
}
header('Content-Encoding: gzip');
ob_start('ob_gzencode');
$buffer_compression_gzip=TRUE;
}
elseif(strpos($accept_encoding,'deflate')!==FALSE){
function ob_gzdeflate($buffer){
return gzdeflate($buffer,1);
}
header('Content-Encoding: deflate');
ob_start('ob_gzdeflate');
$buffer_compression_deflate=TRUE;
}
elseif(strpos($accept_encoding,'x-gzip')!==FALSE){
function ob_gzcompress($buffer){
$size=strlen($buffer);
$crc=crc32($buffer);
$buffer=gzcompress($buffer,1);
$buffer=substr($buffer,0,strlen($buffer)-4);
return "\x1f\x8b\x08\x00\x00\x00\x00\x00".$buffer.pack('V',$crc).pack('V',$size);
}
header('Content-Encoding: x-gzip');
ob_start('ob_gzcompress');
$buffer_compression_x_gzip=TRUE;
}else{
ob_start();
}}else{
ob_start();
}
//----------------------- Буферизация и сжатие документа -----------------------//
A

Оранжевые штаны
0
<?php
//--------------------------- Подсчёт сжатия документа -------------------------//
if(isset($buffer_compression_gzip)){
$buffer_compression_percent=100-(100/(ob_get_length()/strlen(ob_gzencode(ob_get_contents()))));
if($buffer_compression_percent>0 and $buffer_compression_percent<100){
echo 'gzip: '.round($buffer_compression_percent,1).'% / ';}
}
elseif(isset($buffer_compression_deflate)){
$buffer_compression_percent=100-(100/(ob_get_length()/strlen(ob_gzdeflate(ob_get_contents()))));
if($buffer_compression_percent>0 and $buffer_compression_percent<100){
echo 'deflate: '.round($buffer_compression_percent,1).'% / ';}
}
elseif(isset($buffer_compression_x_gzip)){
$buffer_compression_percent=100-(100/(ob_get_length()/strlen(ob_gzcompress(ob_get_contents()))));
if($buffer_compression_percent>0 and $buffer_compression_percent<100){
echo 'x-gzip: '.round($buffer_compression_percent,1).'% / ';}
}
//--------------------------- Подсчёт сжатия документа -------------------------//
Стикеры / Теги / Правила / Топ тем / Топ постов / Поиск