The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"Возможно ли передать клиенту gzip'ленный HTML?"
Вариант для распечатки Архивированная нить - только для чтения! 
Пред. тема | След. тема 
Форумы WEB технологии (Public)
Изначальное сообщение [Проследить за развитием треда]

"Возможно ли передать клиенту gzip'ленный HTML?"
Сообщение от .koval emailИскать по авторуВ закладки on 07-Сен-03, 19:13  (MSK)
Вобщем, чуток покопался в исходниках форума phpBB и увидел там нечто похожее на возможность паковать gzip'ом исходящую страничку и передавать её клиенту. Соответсвенно возник вопрос :) Я всё правильно понял? Если да, то как это работает и с какими клиентами? Если я правильно всё понял, то это обалденная фича для насыщенных текстовой инфой сайтов.
  Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

1. "Возможно ли передать клиенту gzip'ленный HTML?"
Сообщение от Oleg Khimich emailИскать по авторуВ закладки on 07-Сен-03, 20:15  (MSK)
>Вобщем, чуток покопался в исходниках форума phpBB и увидел там нечто похожее
>на возможность паковать gzip'ом исходящую страничку и передавать её клиенту. Соответсвенно
>возник вопрос :) Я всё правильно понял? Если да, то как
>это работает и с какими клиентами?

да в данном случае паковать контент будет php. это работает со всеми новыми браузерами. опера, мозилла, эксплорер (только у этого дятла как обычно проблемы с русской кодировкой)

>Если я правильно всё понял,
>то это обалденная фича для насыщенных текстовой инфой сайтов.

еще один открыл секрет полишинеля :-))
а еще есть mod_gzip ;-))

  Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "Возможно ли передать клиенту gzip'ленный HTML?"
Сообщение от .koval emailИскать по авторуВ закладки on 07-Сен-03, 21:09  (MSK)
>да в данном случае паковать контент будет php. это работает со всеми
>новыми браузерами. опера, мозилла, эксплорер (только у этого дятла
>как обычно проблемы с русской кодировкой)

То есть если gzip'ить, то лучше, чтобы контент сайта был в cp1251?

>>Если я правильно всё понял,
>>то это обалденная фича для насыщенных текстовой инфой сайтов.
>
>еще один открыл секрет полишинеля :-))

не стоит издеваться :) каждый открывает для себя что-то новое когда-нибудь :) мне не каждый день доводиться апачи настраивать, например ;)

>а еще есть mod_gzip ;-))

а подробней можно?

  Рекомендовать в FAQ | Cообщить модератору | Наверх

3. "Возможно ли передать клиенту gzip'ленный HTML?"
Сообщение от zenon emailИскать по авторуВ закладки on 08-Сен-03, 12:28  (MSK)
Взял с сайта www.luxuru.com

Ниже изображена схема HTML документа, который использует алгоритм сжатия. Схема поделена на 3 болка:

<?include('gzсomp.php'); ?>
тело HTML странички
<?gzdocout(); ?>

Первый блок находиться в самом начале HTML документа и включает в документ файл, который отвечает за сжатия HTML данных. Во втором блоке находиться тело HTML документа (его контекст). Третий блок запускает процедуру сжатия.

Алгоритм сжатия
ob_start();
ob_implicit_flush(0);


// Проверка возможности использования алгоритма сжатия function

CheckCanGzip(){
global $HTTP_ACCEPT_ENCODING;
if (headers_sent() || connection_timeout() || connection_aborted()){      return 0;
}

if (strpos($HTTP_ACCEPT_ENCODING, 'x-gzip') !== false) return "x-gzip";
if (strpos($HTTP_ACCEPT_ENCODING,'gzip') !== false) return "gzip";
return 0;
}

// Процедура сжатия

functionGzDocOut($level=1,$debug=0){
$ENCODING = CheckCanGzip();
if ($ENCODING){
   print "\n\n";
   $Contents = ob_get_contents();
   ob_end_clean();
   if ($debug){
     $s = " Длина без сжатия: ".strlen($Contents);
     $s .= " Длина с сжатием: ".strlen(gzcompress($Contents,$level));
     $Contents .= $s;
   }
   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;
}
} ?>


Как использовать этот алгоритм
1. Поместить весь алгоритм в файл :

gzcomp.php

2. В процедуре сжатия GzDocOut, указать уровень сжатия от 0 (не сжимать) до 9 (максимальное сжатие)

3. Как уже говорилось выше надо поставить в самое начало документа (до тэгов HTML) код :

<? include('gzcomp.php'); ?>

4. И в самом конце (после HTML тэгов) вызов на процедуру php сценария :

<?gzdocout(); ?>

Сам не пробовал, но по идее должно работать

  Рекомендовать в FAQ | Cообщить модератору | Наверх

6. "Вполне!"
Сообщение от robocomp emailИскать по авторуВ закладки on 01-Ноя-03, 16:41  (MSK)
Может, конечно, я чего-то не понял в посте. Но, по-моему, средставми ПхП можно сделать это вот так
http://ru2.php.net/manual/en/function.ob-gzhandler.php
Насчет ПХПББ -- там же в админке есть какая-то ссылка типа "отдавать gzip/отдавать plain text", там, вроде как, не надо ничего дописывать?

Проблем с кодировками у эксплорера и корректного mod_deflate -- не встречал ни разу. В общем, у меня не было таких проблем

  Рекомендовать в FAQ | Cообщить модератору | Наверх

4. "Возможно ли передать клиенту gzip'ленный HTML?"
Сообщение от Oleg Искать по авторуВ закладки on 08-Сен-03, 16:43  (MSK)
>>да в данном случае паковать контент будет php. это работает со всеми
>>новыми браузерами. опера, мозилла, эксплорер (только у этого дятла
>>как обычно проблемы с русской кодировкой)
>
>То есть если gzip'ить, то лучше, чтобы контент сайта был в cp1251?

не критично. но эксплореру нужно сказать в метатэге какая кодировка у документа. т.к. сам он не поймет (IE6)

>>еще один открыл секрет полишинеля :-))
>
>не стоит издеваться :) каждый открывает для себя что-то новое когда-нибудь :)
>мне не каждый день доводиться апачи настраивать, например ;)

я пошутил ;-)

>>а еще есть mod_gzip ;-))
>
>а подробней можно?

в случае твоего форума - компрессирует движок PHP. а можно компрессировать всю статику через апач с помощью mod_gzip. с кодировками - те же грабли.

  Рекомендовать в FAQ | Cообщить модератору | Наверх

5. "Возможно ли передать клиенту gzip'ленный HTML?"
Сообщение от Zerg WereWolf Искать по авторуВ закладки on 01-Ноя-03, 14:02  (MSK)
>>>а еще есть mod_gzip ;-))
>>а подробней можно?
>в случае твоего форума - компрессирует движок PHP. а можно компрессировать всю
>статику через апач с помощью mod_gzip. с кодировками - те же
>грабли.

а еще есть mod_deflate

  Рекомендовать в FAQ | Cообщить модератору | Наверх


Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру