Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.03.13;
Скачать: CL | DM;

Вниз

Сжатие контента, экономия траффика   Найти похожие ветки 

 
kaZaNoVa ©   (2005-02-19 11:08) [0]

Всем известно, что сам по себе HTTP-протокол достаточно неэкономичен по отношению к траффику.
А так как многие провайдеры (GPRS-интернета в том числе) в настоящее время тарифицируют по траффику, то проблема экономии траффика в настоящее время как никогда, актуальна.

Особенно важно то, что у большинство сайтов HTML- страницы очень хорошо сжимаются (bzip2 сжимает в 2-7 раз).

В связи с этим у меня вопрос, кто нить знает какие-нибудь сервисы, или, хотя-бы скрипты, которые могут работать как "сжимающие прокси" ?


 
kaZaNoVa ©   (2005-02-19 11:22) [1]

в качестве "полумеры" сделал скрипт, но он крайне неудобен ...  (


<?
//BEST kaZaNoVa HTTP-Compress Script //
error_reporting(0);
set_magic_quotes_runtime(0);
@set_time_limit(0);
@ini_set("max_execution_time",0);
@ini_set("output_buffering",0);  

header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Pragma: no-cache");

if (!isset($HTTP_POST_VARS ["pget"]))

{
echo "
<html><head>
<meta http-equiv=Content-Type content="text/html; charset=windows-1251">
</head><BODY TEXT="#000000" BGCOLOR="#008080"> <br>
<form method=post target="_blank">
<input type=text size=87 name=pget value="ya.ru">  <br><br>

<input type=checkbox name=onlysize> только узнать размер
<br><br>
<input type=submit></form>
</body></html>
";
exit;
}

$pget=ereg_replace ("^http://","",$pget);
$pget=ereg_replace ("^www.","",$pget);

$phost=substr($pget,0,strpos($pget,"/"));

$get_str=substr($pget,strpos($pget,"/"),5000);

$t1="GET $get_str HTTP/1.0\r\n";
$t1.="Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-powerpoint, application/vnd.ms-excel, application/msword, application/x-shockwave-flash, */*\r\n";
$t1.="Accept-Language: ru\r\n";
$t1.="Content-Type: text/html\r\n";
//$t1.="Accept-Encoding: deflate\r\n";
$t1.="User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows 2000)\r\n";
$t1.="Host: $phost\r\n";
//$t1.="Connection: Keep-Alive\r\n";
$t1.="Cache-Control: no-cache\r\n\r\n";

$fp = fsockopen($phost, 80, &$errno, &$errstr,12);

   fputs($fp,$t1);
   $content_http="";
while(!feof($fp))
{
 $content_http.= fgets($fp,1024);
}
 fclose($fp);

$f = fopen ("./afile", "wb");
fwrite ($f,$content_http);
fclose ($f);

exec("bzip2 afile");

$f_name_dl="afile.bz2";

if (isset($HTTP_POST_VARS ["onlysize"]))

{
echo "
<html><head>
<meta http-equiv=Content-Type content="text/html; charset=windows-1251">
</head><BODY TEXT="#000000" BGCOLOR="#008080"> <br>";

echo "Страница размером ".strlen($content_http)." байт  сжато до ".filesize($f_name_dl)." байт";

$ts=strlen($content_http)/filesize($f_name_dl);
$ts=round(100*$ts)/100;

echo "<br><br>Сжатие ".$ts." раз ".filesize($f_name_dl)." байт";

echo "</body></html>";

@unlink($f_name_dl);
exit;
}
 
header("Content-Type: application/force-download; name=\"$f_name_dl\"");
header("Content-Transfer-Encoding: binary");
header("Content-Length: ".filesize($f_name_dl));
header("Content-Disposition: attachment; filename=\"$f_name_dl\"");

@readfile($f_name_dl);

@unlink($f_name_dl);

exit;
?>


 
VMcL ©   (2005-02-19 12:54) [2]

RTFM:
1. ob_start(), ob_end_flush(), ob_gzhandler()
2. zlib.output_compression, zlib.output_compression_level, zlib.output_handler


 
kaZaNoVa ©   (2005-02-19 14:11) [3]

VMcL ©   (19.02.05 12:54) [2]
спасибо, почитаю, а так вообще сжатие gzip эффективно?


 
VictorT ©   (2005-02-19 14:14) [4]


> сжатие gzip эффективно?

такое же, как zip


 
kaZaNoVa ©   (2005-02-19 14:39) [5]

мне bzip2 нравится, жмёт хорошо))))  но только по одному файлу за раз .. TARить приходится .. )


 
kaZaNoVa ©   (2005-02-19 16:01) [6]

а у кого-нить есть готовые скрипты, юзающие gzip сжатие?


 
VictorT ©   (2005-02-19 17:38) [7]


> kaZaNoVa ©   (19.02.05 16:01) [6]

Не совсем понял, что тебе надо? Возможность скачвать  страницу в виде архива, или отдавать сжатую страницу так, чтобы её могли сразу отображать броузеры, поддерживающие сжатие?


 
kaZaNoVa ©   (2005-02-19 20:17) [8]

VictorT ©   (19.02.05 17:38) [7]
всё, что угодно, лишь бы было удобно и чтобы по лучше сжатие .. ))


 
SergP ©   (2005-02-19 20:35) [9]


>
> В связи с этим у меня вопрос, кто нить знает какие-нибудь
> сервисы, или, хотя-бы скрипты, которые могут работать как
> "сжимающие прокси" ?


У меня есть подозрения что некоторые ускорители инета работают по такому способу. Например Marketscore.


 
kaZaNoVa ©   (2005-02-19 20:49) [10]

SergP ©   (19.02.05 20:35) [9]
очень даже возможно)))
а он платный?  где скачать можно (у меня мало траффика искать(((


 
programania ©   (2005-02-19 20:54) [11]

Сделал скрипт на php, если его вызвать например
http://www.programania.com/php/filef.php?a=http://delphimaster.ru/cgi-bin/forum.pl%3Fn%3D3
то он получит ответ сервера по этому URL
выделит из него ссылки на CSS и js
получит и добавить их содержание через <<имя>>
заархивирует в gz примерно в 4 раза
и вернет в ответ архив,
его я разархивирую в delphi использую gzio как в php
Наверно сделаю на этом броузер для уменьшения трафика
Еще есть идея проверять на сервере контрольную
сумму и если не изменилась не качать совсем.
Скрипт примерно такой:

<?php
$url=parse_url($a);      
$s=implode(file($a), "");

function teg ($t, $h, $r) {
 global $url, $s, $d;
 $ss=$s;
 while (strpos(strtolower($ss),$t)>0){
   $ss=stristr($ss,$t);
   $ss=stristr($ss," ");
   $sss=substr($ss,1,strPos($ss,">"));
   $l=strtolower($sss);
   if (strPos($l,$h)>0){
     $sss=stristr($sss,$h);
     if (strPos($l,$r)) {
       $sss= substr($sss,strLen($h),strPos($sss,""")-strLen($h)-1);
       if ($sss[0]=="/") $sl .=""; else $sl="/";
         if (substr(strtolower($sss),0,7)!=="http://")
         $sss=$url["scheme"]  . "://" . $url["host"] . $sl . $sss;
         $d .="<<" . $sss . ">>" . implode(file($sss), "");
     }
   }
 }
return;
}
$d="";
teg("<link ","href="", ".css");
teg("<script ","src="",".js");
$s .=$d;

$f = tempnam("","g");
$gz = gzopen($f, "wb9");
gzwrite($gz, $s, strlen($s) );
gzclose($gz);

readfile($f);
unlink($f);
?>


Извините, не знаю php поэтому наверно криво получилось.


 
kaZaNoVa ©   (2005-02-19 21:23) [12]

о, спасибо, я примерно так хочу сделать .. но я беру только html , всё остальное убираю ))))
js особенно - нам же не нужны баннеры)


 
programania ©   (2005-02-19 22:11) [13]

>kaZaNoVa ©   (19.02.05 21:23) [12]
>js особенно - нам же не нужны баннеры)

на js не только баннеры, но и полезные вещи.
Только что сделал броузер с упаковкой трафика на основе этого
скрипта и webBrowser: загружает, если еще не загрузил
и переходит по ссылкам, но ответить не могу:
не копирует и не добавляет строки в TEXTAREA.
Это что глюки webBrowser или я что-то лишнее выкинул,
Может кто смотрел эту страницу в
webBrowser или даже отвечал?
Или лучше MSIE использовать для своего броузера?
А как можно в MSIE подменить присланный
архив на распакованную страницу?


 
SergP ©   (2005-02-19 22:12) [14]


>  [10] kaZaNoVa ©   (19.02.05 20:49)
> SergP ©   (19.02.05 20:35) [9]
> очень даже возможно)))
> а он платный?  где скачать можно (у меня мало траффика искать(((


В том то и дело что бесплатный. Лучше даже не пытайся ставить себе этот геморой. Идея может и хорошая, но реализация дерьмовая...


 
Adder ©   (2005-02-19 22:38) [15]

http://webwarper.net/
ftp://ftp.almar.net.ru/pub/Warp/wwbim_2_005.exe


 
Adder ©   (2005-02-20 02:52) [16]

ftp://ftp.almar.net.ru/pub/Warp/wwbim_2_007.exe - более свежая версия


 
VictorT ©   (2005-02-20 12:21) [17]


> kaZaNoVa ©   (19.02.05 20:17) [8]

Если нужно

> отдавать сжатую страницу так, чтобы её могли сразу
> отображать броузеры, поддерживающие сжатие?

то см.

> 1. ob_start(), ob_end_flush(), ob_gzhandler()


Кстати, ещё глянь файл zip.lib.php из phpMyAdmin, там есть простенький класс для создания zip архивов.
Я его юзаю например тут http://deep.webest.net/clients/index.php для создания архивов базы форума.


 
kaZaNoVa ©   (2005-02-20 13:56) [18]

Adder ©   (20.02.05 2:52) [16]
что-то этот сервис у меня gzip сжатие в опере не работает(((

пока временно доделал свой скрипт, он у меня ещё и теги вырезает и обеспечивает сжатие в итоге 5-20 раз)))


 
kaZaNoVa ©   (2005-02-20 13:59) [19]

VictorT ©   (20.02.05 12:21) [17]

> 1. ob_start(), ob_end_flush(), ob_gzhandler()

у меня что-то в Опере так и не хочет принимать сжимающий . .или ещё что-то но я пока не смог задействовать эти функции . . ))


> там есть простенький класс для создания zip архивов

это не требуется, гораздо проще и удобнее запустить (Exec()) системный архиватор ))  я обычно юзаю BZIP2 как самый эффективный, однако можно и RAR юзать))  (предварительно закачав его на сервак, если нет))  на  H14 имхо есть уже RAR ))))


 
VictorT ©   (2005-02-20 15:11) [20]


> у меня что-то в Опере так и не хочет принимать
> сжимающий

Может, она его не поддерживает? Броузеры, которые подерживают эту фичу, должны в http-заголовке посылать инфу о том, что они её поддерживают.


 
[wl]   (2005-02-20 18:44) [21]

http://GprsBooster.com


 
Kerk ©   (2005-02-20 19:24) [22]

[wl]   (20.02.05 18:44) [21]

установил.. нифига не работает :(


 
wl ©   (2005-02-21 11:30) [23]

не знаю я уже пользуюсь это программой больше года...сколько ящиков бесплатных зарегил(для продления триала) даже и не помню. в среднем компрессия составляет 50%. Так как в основном плачу за траффик сэкономил ровно половину денег.
Извините за рекламу.
Если надо могу объяснить как настроить.


 
Kerk ©   (2005-02-21 11:31) [24]


> Если надо могу объяснить как настроить.

уже заработало.. но теперь из IE не могу по https никуда попасть. а компрессия правда около 50%.. приятно :)


 
wl ©   (2005-02-21 11:50) [25]

а он отключается по менюшке в систрее


 
Kerk ©   (2005-02-21 11:51) [26]

wl ©   (21.02.05 11:50) [25]

пробовал.. не помогает.. мозила на https:// лезет.. IE нет. :(



Страницы: 1 вся ветка

Текущий архив: 2005.03.13;
Скачать: CL | DM;

Наверх




Память: 0.54 MB
Время: 0.025 c
3-1108067059
Коля
2005-02-10 23:24
2005.03.13
Загрузка bmp в поле


1-1109256935
jonni
2005-02-24 17:55
2005.03.13
deafult .... что же это значит??


1-1109620346
User1
2005-02-28 22:52
2005.03.13
StringGrid. Несколько вопросов.


14-1108805932
07BB:080Dh
2005-02-19 12:38
2005.03.13
Как вычелисть проги в трее?


9-1102850191
DeadMeat
2004-12-12 14:16
2005.03.13
Цена моделей