Форум: "Потрепаться";
Текущий архив: 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.05 c