Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 2005.03.13;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.52 MB
Время: 0.033 c
14-1109095323
Knight
2005-02-22 21:02
2005.03.13
Кто как подразделяет дистрибутивы?


6-1104431263
Delpher_Gray
2004-12-30 21:27
2005.03.13
Новоые подключение на событие OnDisconnect


1-1109265207
novice_man
2005-02-24 20:13
2005.03.13
Очистка списка указателей.


4-1107244363
VsInLg
2005-02-01 10:52
2005.03.13
CreateThread и BeginThread


6-1104840240
Bork
2005-01-04 15:04
2005.03.13
как скачать файл по http?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский