Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> GZIP сжатие страницы 
V
    Опции темы
savmp
Дата 20.1.2010, 00:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Awaiting Authorisation
Сообщений: 260
Регистрация: 27.7.2009
Где: Геленджик

Репутация: -13
Всего: -16



Как сделать gzip сжатие страницы на максимум, а также самое ГЛАВНОЕ это вывести размер до сжатия и размер после сжатия в байтах?
PM MAIL ICQ   Вверх
savmp
Дата 20.1.2010, 16:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Awaiting Authorisation
Сообщений: 260
Регистрация: 27.7.2009
Где: Геленджик

Репутация: -13
Всего: -16



Подскажите, тот результат который показывает скрипт, он достоверный?

И этот скрипт делает максимальное сжатие или нет?

Скрипт выдаст примерно такой результат:

Original size: 279 - в чём измеряется этот результат? (байты или килобайты)?
GZipped size: 180 - в чём измеряется этот результат? (байты или килобайты)?
Сompression: 65% - и это как я понимаю не процент сжатия страницы, это результат насколько процентов меньше слала страница... а как посчитать процент сжатия страницы (то есть насколько % сжалась страница.


Цитата

<?
if (strpos (' ' . $_SERVER['HTTP_ACCEPT_ENCODING'], 'x-gzip') !== false) {$encoding = 'x-gzip';}
if (strpos (' ' . $_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip') !== false) {$encoding = 'gzip';}
if (isset ($encoding)) {ob_start();}
function percent ($as, $on) {$gziptotal = $on / $as * 100; return $gziptotal;}
?>



<body>
<table width="500" height="200" cellspacing="0" cellpadding="0" border="1">
<tbody align="center">
<tr>
<td width="500" height="100">Всем привет!</td>
</tr>
<tr>
<td width="500" height="100">

<!- gzip ->

</td>
</tr>
</tbody>
</table>
</body>



<?
if (isset ($encoding)) {
$gzipper = ob_get_contents ();
$miniBB_gzipper_inlenn = strlen ($gzipper);
$miniBB_gzipper_out = gzencode ($gzipper, 2);
$miniBB_gzipper_lenn = strlen ($miniBB_gzipper_out);
$miniBB_gzipper_in_strlen = strlen ($gzipper);
$gzpercent = percent ($miniBB_gzipper_in_strlen, $miniBB_gzipper_lenn);
$percent = round ($gzpercent);
$gzipper = str_replace ('<!- gzip ->', 'Original size: '.strlen($gzipper).' GZipped size: '.$miniBB_gzipper_lenn.' Сompression: '.$percent.'%', $gzipper);
$miniBB_gzipper_out = gzencode ($gzipper, 2);
ob_clean(); header ('Content-Encoding: '.$encoding);
echo "$miniBB_gzipper_out";
}
?>

PM MAIL ICQ   Вверх
DikShv
Дата 20.1.2010, 17:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 19.1.2010

Репутация: нет
Всего: нет



Я этим пользуюся когда мне нужно
Код

<?

/* Инициализация оснавных модулей
Разработка: kosta.kz
Автор: Шевцов Дмитрий
*/
ob_start();
ob_implicit_flush(0);
function CheckCanGzip(){
    global $_SERVER;
    if (headers_sent() || connection_aborted()){
        return 0;
    }
    if (strpos($_SERVER['HTTP_ACCEPT_ENCODING'],  'x-gzip') !== false) return "x-gzip";
    if (strpos($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip') !== false) return "gzip";
    return 0;
}
/* $level = compression level 0-9,  0=none,  9=max */
function GzDocOut($level=5, $debug=0){    global $gzip;
    $ENCODING = CheckCanGzip();
    if ($ENCODING && $gzip){
        //print "\n<!-- Use compress $ENCODING -->\n";
        $Contents = ob_get_contents();
        ob_end_clean();
        $Contents.="<!--[GZIP: ON]";
        if ($debug){
            $s = "Без сжатия: ".strlen($Contents)."\n\r";
            $s .= "Сжатая: ".strlen(gzcompress($Contents, $level))."\n\r";
            $Contents .= $s;
        }
        $Contents .= "-->";
        header("Content-Encoding: $ENCODING");
        print "\x1f\x8b\x08\x00\x00\x00\x00\x00";
        $Size = strlen($Contents);
        $Crc = crc32($Contents);
        $Contents = gzcompress($Contents, $level);
        $Contents = substr($Contents,  0,  strlen($Contents) - 4);
        print $Contents;
        print pack('V', $Crc);
        print pack('V', $Size);
        exit;
    }else{
        ob_end_flush();
        exit;
    }
}
?>

PM MAIL   Вверх
savmp
Дата 20.1.2010, 18:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Awaiting Authorisation
Сообщений: 260
Регистрация: 27.7.2009
Где: Геленджик

Репутация: -13
Всего: -16



DikShv я не пойму... этот скрипт работает или нет...
Куда его нужно вставлять в начало страницы или нет?

Он не выводит результат...
PM MAIL ICQ   Вверх
DikShv
Дата 20.1.2010, 18:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 19.1.2010

Репутация: нет
Всего: нет



Файл инклудиш в начале скрипта, а функцию GzDocOut($level=5, $debug=0) в конце скрипта.
Что бы выводило ставиш $debug=1
PM MAIL   Вверх
savmp
Дата 20.1.2010, 20:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Awaiting Authorisation
Сообщений: 260
Регистрация: 27.7.2009
Где: Геленджик

Репутация: -13
Всего: -16



DikShv не пойму куда и, что нужно ставить... я только начинаю изучать PHP для меня трудно запустить этот скрипт... хотя я хочу !

А эту функцию: GzDocOut($level=5, $debug=0)

нужно так вставлять <? GzDocOut($level=5, $debug=0) ?>

А, что такое (Файл инклудиш ) я немного не пойму...

Помоги...
PM MAIL ICQ   Вверх
DikShv
Дата 20.1.2010, 20:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 19.1.2010

Репутация: нет
Всего: нет



Код

<?
include "gz.php";

/*тут твой код*/

GzDocOut(9 1);
?>

Получиш сжатие

ах да
Код

$Contents.="<!--[GZIP: ON]";
        if ($debug){
            $s = "Без сжатия: ".strlen($Contents)."\n\r";
            $s .= "Сжатая: ".strlen(gzcompress($Contents, $level))."\n\r";
            $Contents .= $s;
        }
        $Contents .= "-->";

замени на
Код

$Contents.="[GZIP: ON]";
        if ($debug){
            $s = "Без сжатия: ".strlen($Contents)."\n\r";
            $s .= "Сжатая: ".strlen(gzcompress($Contents, $level))."\n\r";
            $Contents .= $s;
        }

PM MAIL   Вверх
savmp
Дата 20.1.2010, 20:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Awaiting Authorisation
Сообщений: 260
Регистрация: 27.7.2009
Где: Геленджик

Репутация: -13
Всего: -16



Короче... я ничего не понял... точнее не могу понять... походу PHP не для меня  smile 

<?
include "gz.php";

/*тут твой код*/ какой тут код??? не пойму....

GzDocOut(9 1);
?>


DikShv можешь загрузить готовыми файлами если тебе не трудно?

Просто PHP для меня ещё сложноват...


PM MAIL ICQ   Вверх
DikShv
Дата 20.1.2010, 20:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 19.1.2010

Репутация: нет
Всего: нет



Ты издеваешься?
Если сейчас не понятно, то тебе сначала нужно в книгу заглянуть по РНР
PM MAIL   Вверх
savmp
Дата 20.1.2010, 21:11 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Awaiting Authorisation
Сообщений: 260
Регистрация: 27.7.2009
Где: Геленджик

Репутация: -13
Всего: -16



...
PM MAIL ICQ   Вверх
savmp
Дата 20.1.2010, 21:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Awaiting Authorisation
Сообщений: 260
Регистрация: 27.7.2009
Где: Геленджик

Репутация: -13
Всего: -16



Подскажите, тот результат который показывает приведённый ниже скрипт, он достоверный?

И этот скрипт делает максимальное сжатие или нет?

Скрипт выдаст примерно такой результат:

Original size: 279 - в чём измеряется этот результат? (байты или килобайты)?
GZipped size: 180 - в чём измеряется этот результат? (байты или килобайты)?

Цитата

<?
if (strpos (' ' . $_SERVER['HTTP_ACCEPT_ENCODING'], 'x-gzip') !== false) {$encoding = 'x-gzip';}
if (strpos (' ' . $_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip') !== false) {$encoding = 'gzip';}
if (isset ($encoding)) {ob_start();}
function percent ($as, $on) {$gziptotal = $on / $as * 100; return $gziptotal;}
?>



<body>
<table width="500" height="200" cellspacing="0" cellpadding="0" border="1">
<tbody align="center">
<tr>
<td width="500" height="100">Всем привет!</td>
</tr>
<tr>
<td width="500" height="100">

<!- gzip ->

</td>
</tr>
</tbody>
</table>
</body>



<?
if (isset ($encoding)) {
$gzipper = ob_get_contents ();
$miniBB_gzipper_inlenn = strlen ($gzipper);
$miniBB_gzipper_out = gzencode ($gzipper, 2);
$miniBB_gzipper_lenn = strlen ($miniBB_gzipper_out);
$miniBB_gzipper_in_strlen = strlen ($gzipper);
$gzpercent = percent ($miniBB_gzipper_in_strlen, $miniBB_gzipper_lenn);
$percent = round ($gzpercent, 2);
$percent = 100 - $percent;
$gzipper = str_replace ('<!- gzip ->', 'Original size: '.strlen($gzipper).' GZipped size: '.$miniBB_gzipper_lenn.' Сompression: '.$percent.'%', $gzipper);
$miniBB_gzipper_out = gzencode ($gzipper, 2);
ob_clean(); header ('Content-Encoding: '.$encoding);
echo "$miniBB_gzipper_out";
}
?>



Протестируйте скрипт....
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0606 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.