Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Последние темы форума

Показать новые сообщения »

Почтовая рассылка

Подписчиков: 11634
Последний выпуск: 19.06.2015

Сжатие страниц на PHP

Основное назначение скрипта - сжатие страниц, передаваемых сервером браузеру. У меня в среднем сжималось в 4 раза.

Одно "НО": Не ставьте уровень сжатия больше 3 - размер не уменьшится, а нагрузка на сервер - еще как.

Скрипт используется следующим образом:

<?
 include('gzdoc.php'); 
?>
<HTML>
... the page ...
</HTML>
<?
 gzdocout(); 
?>

gzdoc.php

<?
/*
** Title.........: PHP4 HTTP Compression Speeds up the Web
** Version.......: 1.20
** Author........: catoc <catoc@163.net>
** Filename......: gzdoc.php
** Last changed..: 18/10/2000
** Requirments...: PHP4 >= 4.0.1
**                 PHP was configured with --with-zlib[=DIR]
** Notes.........: Dynamic Content Acceleration compresses
**                 the data transmission data on the fly
**                 code by sun jin hu (catoc) <catoc@163.net>
**                 Most newer browsers since 1998/1999 have
**                 been equipped to support the HTTP 1.1
**                 standard known as "content-encoding."
**                 Essentially the browser indicates to the
**                 server that it can accept "content encoding"
**                 and if the server is capable it will then
**                 compress the data and transmit it. The
**                 browser decompresses it and then renders
**                 the page.
**
**                 Modified by John Lim (jlim@natsoft.com.my)
**                  based on ideas by Sandy McArthur,  Jr
** Usage........:
**                 No space before the beginning of the first '<?' tag.
**                 ------------Start of file----------
**                 |<?
**                 | include('gzdoc.php'); 
**                 |?>
**                 |<HTML>
**                 |... the page ...
**                 |</HTML>
**                 |<?
**                 | gzdocout(); 
**                 |?>
**                 -------------End of file-----------
*/
ob_start(); 
ob_implicit_flush(0); 
function CheckCanGzip(){
    global $HTTP_ACCEPT_ENCODING; 
    if (headers_sent() || 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; 
}
/* $level = compression level 0-9,  0=none,  9=max */
function GzDocOut($level=3, $debug=0){
    $ENCODING = CheckCanGzip(); 
    if ($ENCODING){
        print "\n<!-- Use compress $ENCODING -->\n"; 
        $Contents = ob_get_contents(); 
        ob_end_clean(); 
        if ($debug){
            $s = "<center><font style='color:#C0C0C0;
                  font-size:9px; font-family:tahoma'>Not compress
                  length: ".strlen($Contents).";  "; 
            $s .= "Compressed length: ".
                   strlen(gzcompress($Contents, $level)).
                   "</font></center>"; 
            $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; 
    }
}
?>

Оставить комментарий

Комментарий:
можно использовать BB-коды
Максимальная длина комментария - 4000 символов.
 

Комментарии

1.
98K
25 февраля
Руслан Казбеков
0 / / 25.02.2017
Мне нравитсяМне не нравится
25 февраля 2017, 17:38:46
Не могу понять зачем вызывать страницу а потом сжимать, тоже самое наверное.
2.
96K
03 ноября 2015 года
Teatr Drama
0 / / 03.11.2015
Мне нравитсяМне не нравится
3 ноября 2015, 12:30:06
Норм работал всё окей
3.
Аноним
+1 / -0
Мне нравитсяМне не нравится
17 февраля 2006, 22:13:14
Valex, а ты попробуй скажи это хостеру!!!
4.
Аноним
Мне нравитсяМне не нравится
16 февраля 2006, 13:05:37
Мона в PHP.ini заменить строку:
zlib.output_compression = Off
на:
zlib.output_compression = On
ефект будет куда лутше скриптов :)
5.
Аноним
+1 / -0
Мне нравитсяМне не нравится
7 февраля 2006, 15:32:43
какого хрена? в PHP существует встроенный GZIP-обработчик. Просто в начале сценария надо вставить строку

ob_start("ob_gzhandler", 9);

9 - максимальный уровень сжатия. Работает оччень эффективно. Проверял. Итак, наш скрипт будет выглядеть примерно так:

<?ob_start("ob_gzhandler")?>
<html>
<body>
<p>This should be a compressed page.</p>
</html>
<body>
6.
Аноним
Мне нравитсяМне не нравится
15 сентября 2005, 15:17:10
Лучше отказаться от показа насколько уменьшился файл при сжатие чем сжимать его 2 раза только ради этого. Попробуй проверь насколько система тормозит из-за этой "красоты"
7.
Аноним
Мне нравитсяМне не нравится
27 июля 2005, 21:18:13
Реально работает, причем на видне с одной стороны и опере/ие6 с другой
8.
Аноним
Мне нравитсяМне не нравится
10 марта 2005, 00:24:50
небольшая поправка:
function CheckCanGzip(){
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;
}

Иначе работать отказалось...
9.
Аноним
Мне нравитсяМне не нравится
16 ноября 2004, 13:43:44
Да я проверил %))
нада чтоб на сервере был Gzip настроин.
27219 жал до
26819
10.
Аноним
Мне нравитсяМне не нравится
10 ноября 2004, 18:36:20
и че реально работает?
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог