Использование этого модуля — наиболее совместимый способ включения GZIP-сжатия страниц на вашем сайте (работающем, разумеется, на PHP).
Сжатие GZIP может значительно ускорить загрузку страниц для всех ваших посетителей, в обмен на большую нагрузку на процессор сервера. Но если ваш сайт — не Yandex, а сервер — не 386'ой, её врядли кто-то заметит.
Все современные браузеры поддерживают этот метод сжатия, а если скрипт обнаружит какой-то древний браузер без этой поддержки — он просто будет "скармливать" ему несжатые страницы, так что посетитель увидит их в любом случае.
Подробнее узнать о сжатии GZIP можно здесь:
* http://webcompression.org
* Why use HTTP Compression
* Compress Your Web
Использование
Создаём файл gzip.php, прописываем в нём следующий код и помещаем в каталог с сайтом.
Код файла gzip.php
<?php // gzip.php v1.2 - read http://rm.pp.ru/?1.phpgzip // released on 2004-05-06, by Roman Mamedov<roman at rm.pp.ru> // 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(); } } ?>
После этого добавляем такую строчку:
include("gzip.php");
...куда-нибудь в начало всех PHP-скриптов, выдающих страницы посетителям.
Наиболее совместимый?
Есть и другой способ включения сжатия. Он заключается в использовании встроенной функции PHP:
ob_start("ob_gzhandler");
Однако было обнаружено, что это не работает на некоторых серверах. Хотя сама строчка не выдаёт никаких ошибок, сжатия просто не происходит! Причины наверняка кроются в особенностях настройки этих серверов. Только с помощью gzip.php удалось задействовать сжатие, и ощутить, наконец, его преимущества.