Пишу следующий код:
$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). Подскажите что я не так делаю.
> print "Content-Encoding: gzip\n\n";По-моему тут нужен один \n
А вообще, не нужно изобретать велосипед. Смотрите в сторону буферизации вывода в php.
>> print "Content-Encoding: gzip\n\n";
>
>По-моему тут нужен один \nНе помогает.
>А вообще, не нужно изобретать велосипед. Смотрите в сторону буферизации вывода
>в php.Я на перле пишу. И мне хотелось бы на нем и сделать сжатие. Если это конечно возможно.
>Я на перле пишу. И мне хотелось бы на нем и сделать
>сжатие. Если это конечно возможно.Извиняюсь, не вчитался. На перле вообще всё возможно. Хоть я так и не понял где у вас ошибка, но зато нашёл такую страницу:
http://cpan.uwinnipeg.ca/htdocs/CGI-WebGzip/CGI/WebGzip.pm.html
>Пишу следующий код:
>$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";}
Во-первых, - отсутствует заголовок 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;