Для дизайнеров GZIP компрессия

Главные вкладки

Аватар пользователя B.X B.X 18 июня 2006 в 12:54

[url=http://rm.pp.ru/?soft.phpgzip]http://rm.pp.ru/?soft.phpgzip[/url]

Нашёл, про GZIP компрессию. Действительно, сжимает текст сайта в несколько (в 2-4) раз. Быстрее загружаются странички. Быстрее сайт работает. Самое интересное, что обнаружил у себя на сайте из-за этого ошибку в ссылках на изображения. Странно, во всех браузерах работает, но всё равно ведь ошибка есть... ссылки на аватары почему-то как //harzah.net/system идут, зачем-то, http:// есть в галерее (это уже не ошибка, но непонятно зачем оно там) плюс опять же, зачем-то пишется папка system везде, соответственно изображения не показываются...

Код приведу тоже:

<?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($output9);
}

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();
   }
}
?>

Комментарии

Аватар пользователя axel axel 18 июня 2006 в 13:56

На мой взгляд предпочтительнее включать mod_deflate под апачем, а компрессию скриптом только в случае если mod_deflate не доступен.

--
Axel,
Darcs-репозиторий разработок для Drupal

Аватар пользователя B.X B.X 18 июня 2006 в 13:59

именно, что недоступен, но этим скриптом действительно у меня стал быстрее работать... сжимает всё-таки... я его прописал в index.php, вообще, куда следует прописывать сторонние пхп скрипты, чтобы они работали?

Аватар пользователя axel axel 18 июня 2006 в 15:11

С учётом того, что в друпале всё через одно место - через этот самый index.php вызывается, то добавлять туда всё остальное выглядит логично. Гарантируется, что никакие обращения к сайту мимо твоего кода не проскочат.

--
Axel,
Darcs-репозиторий разработок для Drupal

Аватар пользователя Basilienis Basilienis (не проверено) 19 июня 2006 в 18:47

В кэше друпала и без того используется gzip компрессия, и отдает он контент пожатым. В результате, не ужимается только css, но css ужимать и не рекомендуется, хотя эффект приличный: все мелкие картинки из css тогда оказываются в одном файле, это сильно уменьшает число потоков, да и сам объем css файлов довольно приличный.
Другое дело, что у меня на хостинге, например, php модуль gzip работает некорректно, пришлось отключить копрессию кэша друпала хаком, и использовать mod апача. Вообще, gzip-комрессия, что для апача, что для модуля php включается через .htaccess, если они есть.

Аватар пользователя B.X B.X 20 июня 2006 в 1:33

просто я заметил, что сжатая этим самым скриптом страничка 7кб, а несжатая 22кб и долго загружается... а так - просто мгновенно, хотя перед показом есть задержка...
[b]Добавлено:[/b]
да, действительно...
добавить надо в htaccess только php_flag zlib.output_compression On
и всё нормально будет, причём в отличие от вышеприведённого скрипта, ссылки на картинки работают в других браузерах, а размер теперь также 7кб, а был 22кб... хм, фантастика... всего одна строчка...

кстати, нашёл по поиску Яндекса страницу по этому поводу и это оказалась страница с Drupal.Ru - [url=http://drupal.ru/node/519#comment-3417]http://drupal.ru/node/519[/url]


а вот насчёт этой [url=http://drupal.ru/node/1794]темы[/url] я так и не понял... почему ссылки на картинки такого вида? откуда там system и как это оттуда убрать?

Аватар пользователя Basielienis Basielienis 26 июня 2006 в 13:43

страничка 7кб, а несжатая 22кб и долго загружается

Ну так это и происходит за счет сжатия css файлов. Могут быть проблемы с некоторыми браузерами. Сжимать или не сжимать css? Я для себя так и не определился.

Аватар пользователя shura shura 4 июля 2006 в 17:53

ИМХО не css жать, а инклудить его в index.php, и его уже потом жать Wink
Хотя, с другой стороны, css чаще всего берется из локального кеша (заголовок-то не отправляется...)

Аватар пользователя Dimm Dimm 26 февраля 2008 в 21:45

Включил gzip_module - html сжался в 5 раз, а css и js файлы не сжимались.
Нашел решение по настройке gzip_module http://www.lissyara.su/?id=1131

<IfModule mod_gzip.c>
# включен ли модуль mod_gzip
mod_gzip_on                   Yes
# исключения - ява скрипты и таблицы стилей.
# на самом деле современные браузеры корректно понимают
# сжатые скрипты и CSS - тока Netscape4 не переваривает
# но его немного - поэтому в принципе эти две строки можно
# закомментировать, или поменять `exclude` на `include`
mod_gzip_item_include         file       \.js$
mod_gzip_item_include         file       \.css$
</IfModule>

В результате сайт залетал:
html сжатие - в 5 раз
css сжатие - в 2,5 раза
js сжатие - в 2 раза