URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID8
Нить номер: 5258
[ Назад ]

Исходное сообщение
"не работает gZip сжатие контента"

Отправлено zhukovia , 23-Сен-07 13:50 
Пишу следующий код:
$str_page = "Это моя страничка";
if(($ENV{HTTP_ACCEPT_ENCODING} || '') =~ /gzip/){
    $str_page = Compress::Zlib::memGzip($str_page);
        print "Content-Encoding: gzip\n\n";
}
print "Content-Type: text/html;\n\n";
print $str_page;
В результате в браузер выдается чистая страница (т.е. ничего). Если убрать строку print"Content-Encoding: gzip\n\n"; то тогда выдает код сжатую страницу (т.е. текст файла gzip). Подскажите что я не так делаю.

Содержание

Сообщения в этом обсуждении
"не работает gZip сжатие контента"
Отправлено anonymous , 23-Сен-07 16:43 
>        print "Content-Encoding: gzip\n\n";

По-моему тут нужен один \n

А вообще, не нужно изобретать велосипед.  Смотрите в сторону буферизации вывода в php.


"не работает gZip сжатие контента"
Отправлено zhukovia , 23-Сен-07 16:57 
>>        print "Content-Encoding: gzip\n\n";
>
>По-моему тут нужен один \n

Не помогает.
>А вообще, не нужно изобретать велосипед.  Смотрите в сторону буферизации вывода
>в php.

Я на перле пишу. И мне хотелось бы на нем и сделать сжатие. Если это конечно возможно.


"не работает gZip сжатие контента"
Отправлено anonymous , 23-Сен-07 21:27 
>Я на перле пишу. И мне хотелось бы на нем и сделать
>сжатие. Если это конечно возможно.

Извиняюсь, не вчитался.  На перле вообще всё возможно.  Хоть я так и не понял где у вас ошибка, но зато нашёл такую страницу:

http://cpan.uwinnipeg.ca/htdocs/CGI-WebGzip/CGI/WebGzip.pm.html


"не работает gZip сжатие контента"
Отправлено konst , 25-Сен-07 03:21 
>Пишу следующий код:
>$str_page = "Это моя страничка";
>if(($ENV{HTTP_ACCEPT_ENCODING} || '') =~ /gzip/){
> $str_page = Compress::Zlib::memGzip($str_page);
>        print "Content-Encoding: gzip\n\n";
>}

else {
>print "Content-Type: text/html;\n\n";

}


"не работает gZip сжатие контента"
Отправлено andy , 25-Сен-07 04:54 
Во-первых, - отсутствует заголовок Content-Length
Во-вторых, - см. спецификацию http: пустая строка означает конец заголовка. Все, что после - данные (в коде специально выделено)

--------------
$str_page = "Это моя страничка";

if( exists( $ENV{HTTP_ACCEPT_ENCODING} ) && $ENV{HTTP_ACCEPT_ENCODING} =~ /gzip/){
$str_page = Compress::Zlib::memGzip($str_page);
        print "Content-Encoding: gzip", "\n";
}
# никогда не помешает, особенно с бинарными данными
print "Content-Length: ", length($str_page), "\n";
print "Content-Type: text/html;", "\n";
# пустая строка - конец заголовка
print "\n";  

# вываливаем данные
print $str_page;