PHP

PHP gzip module

Использование этого модуля — наиболее совместимый способ включения GZIP-сжатия страниц на вашем сайте (работающем, разумеется, на PHP).

Сжатие GZIP может значительно ускорить загрузку страниц для всех ваших посетителей, в обмен на большую нагрузку на процессор сервера. Но если ваш сайт — не Yandex, а сервер — не 386'ой, её врядли кто-то заметит.

Все современные браузеры поддерживают этот метод сжатия, а если скрипт обнаружит какой-то древний браузер без этой поддержки — он просто будет "скармливать" ему несжатые страницы, так что посетитель увидит их в любом случае.

Подробнее узнать о сжатии GZIP можно здесь:

http://webcompression.org
Why use HTTP Compression
Compress Your Web

Использование

Скачиваем (размер меньше 1 килобайта): жмем правой кнопкой по ссылке, выбираем "Сохранить как...".
Переименовываем в gzip.php, и помещаем в каталог с сайтом. После этого добавляем такую строчку:
 include("gzip.php");

...куда-нибудь в начало всех PHP-скриптов, выдающих страницы посетителям.

Наиболее совместимый?

Есть и другой способ включения сжатия. Он заключается в использовании встроенной функции PHP:
 ob_start("ob_gzhandler");

Однако я обнаружил, что это не работает на некоторых серверах. Хотя сама строчка не выдаёт никаких ошибок, сжатия просто не происходит! Причины наверняка кроются в особенностях настройки этих серверов. Только с помощью gzip.php удалось задействовать сжатие, и ощутить, наконец, его преимущества.

Код файла gzip.php
// gzip.php v1.2 - read http://rm.pp.ru/?1.phpgzip 
// released on 2004-05-06, by Roman Mamedov 
// license: do with this code whatever you want. 

///// Configuration ////////////////// 
$PREFER_DEFLATE = false; // prefer deflate over gzip when both are supported 
$FORCE_COMPRESSION = false; // force compression even when client does not report support 
////////////////////////////////////// 

function compress_output_gzip($output) { 
 return gzencode($output); 
} 

function compress_output_deflate($output) { 
 return gzdeflate($output, 9); 
} 

if(isset($_SERVER['HTTP_ACCEPT_ENCODING'])) 
 $AE = $_SERVER['HTTP_ACCEPT_ENCODING']; 
else 
 $AE = $_SERVER['HTTP_TE']; 

$support_gzip = (strpos($AE, 'gzip') !== FALSE) || $FORCE_COMPRESSION; 
$support_deflate = (strpos($AE, 'deflate') !== FALSE) || $FORCE_COMPRESSION; 

if($support_gzip && $support_deflate) { 
 $support_deflate = $PREFER_DEFLATE; 
} 

if ($support_deflate) { 
 header("Content-Encoding: deflate"); 
 ob_start("compress_output_deflate"); 
} else{ 
 if($support_gzip){ 
 header("Content-Encoding: gzip"); 
 ob_start("compress_output_gzip"); 
 } else { 
 ob_start(); 
 } 
}
Добавлено: 17 Августа 2013 06:35:31 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...