Сжатие HTML на выходе

12
SilverMaster
На сайте с 08.10.2003
Offline
228
#11
T.R.O.N:

а вы действительно считаете, даже при отсутствии кеша, что время отправки (не генерации) страницы имеет общую выгоду более 1-3%?.. улыбнуло.

Меня улыбает другое, что никто не знает КАК, но все знают почему это не надо делать ;)

SilverMaster добавил 23.10.2009 в 12:58

Алилуйя! Первый коммент близкий по теме ;)

Это я так понимаю для JS.

Осталось найти для HTML, спасибо - буду копать.

Из детских комшаров: "А вдруг ночью придет страшный робот!" Из взрослых: "И криво проиндексирует сайт". Не всякий гик добежит до середины поисковой страницы гугла
BR
На сайте с 28.06.2008
Offline
75
#12
SilverMaster:
Меня улыбает другое, что никто не знает КАК, но все знают почему это не надо делать ;)

- для того чтобы ответить "как" надо знать "на чем" :))) Пример кода на PHP:

$text = preg_replace('/s+/', ' ', $text);
размещение сайтов (http://www.brim.ru)
J
На сайте с 02.02.2009
Offline
53
#13
Brim.ru:
- для того чтобы ответить "как" надо знать "на чем" :))) Пример кода на PHP:
$text = preg_replace('/s+/', ' ', $text);

1. $text = preg_replace('/\s+/', ' ', $text);

.... TC .....

2.

$text = preg_replace('/[\t\n]/', '', $text);

$text = preg_replace('/\s\s+/', ' ', $text);

3. use gzip :)

4. Оптимизируйте код - разносите CSS, JS. JS можно паковать packerом , для css тоже полно оптимизаторов

T.R.O.N
На сайте с 18.05.2004
Offline
314
#14
SilverMaster:
Меня улыбает другое, что никто не знает КАК, но все знают почему это не надо делать

А разве это не достаточное основание больше не придумывать нелепых задач?

От воздержания пока никто не умер. Хотя никто и не родился! Prototype.js был написан теми, кто не знает JavaScript, для тех, кто не знает JavaScript (Richard Cornford)
dma84
На сайте с 21.04.2009
Offline
168
#15

Юзайте поиск

N
На сайте с 06.05.2007
Offline
419
#16

противники могут писать что угодно, но людям это нужно. gzip это хорошо, но можно сделать еще лучше.

писать хорошие темплаты - не вариант. а уж сколько лишних комментариев обычно в этих темплатах.

dma84, нет, tidy слишком тормозит и не сжимает.

я бы тоже с удовольствием бы поимел расширение php на C в виде конечного автомата, но чтото не нашлось.

пока использую такое :


global $ascript, $atext, $apre;

// definition of callback functions
function cb_script($matches)
{
global $ascript;

$i = count($ascript) + 1;
$h = md5($matches[0]);
$ascript[$i][0] = $matches[0];
$ascript[$i][1] = $h;

return $h;
}

function cb_text($matches)
{
global $atext;

$i = count($atext) + 1;
$h = md5($matches[0]);
$atext[$i][0] = $matches[0];
$atext[$i][1] = $h;

return $h;
}

function cb_pre($matches)
{
global $apre;

$i = count($apre) + 1;
$h = md5($matches[0]);
$apre[$i][0] = $matches[0];
$apre[$i][1] = $h;

return $h;
}


// init some variables/arrays
$page_byte = strlen($output);
$ascript = array();
$atext = array();
$apre = array();

// cut from output, and store away for later re-inclusion, everything between <textarea> and <pre> tags
// (we do not want to touch those blocks as they may contain wanted whitespace)
$output=preg_replace_callback('/<textarea.*?[^\btextarea>\b]*?textarea>/si', "cb_text", $output);
$output=preg_replace_callback('/<pre.*?[^\bpre>\b]*?pre>/si', "cb_pre", $output);
// also cut and save <nocompress> tagged text (intentional excluded parts)
$output=preg_replace_callback('/<nocompress.*?[^\bnocompress>\b]*?nocompress>/si', "cb_text", $output);

// strip all whitespace at the beginning of every new line (but leave the linebreak intact)
$output=preg_replace('/(\r)?\n(\s*)/', "\n", $output);

// cut from output, and store away for later re-inclusion, everthing between <script> tags
// (we don't want to strip the linebreaks from script code since that would render the scripts non working)
$output=preg_replace_callback('/<script.*?[^\bscript>\b]*?script>/si', "cb_script", $output);

// strip all linebreaks and HTML-Comments from the output
// (since we first strip all linebreaks, even multi-line comments will get striped this way! :-))
$output = str_replace("\n" ," " ,$output );
$output = preg_replace('/\/\*.*?[^\b\*\/\b]*?.*?\*\//',"" , $output);
$output = preg_replace('/<!--[^\{\[\]*?[^b<!--\b]*?[^\b-->\b]*?-->/i', "", $output);
// We exclude HTML comments containing "{" and "[" // this way CSS definitions and AnyMedia stuff won't get striped

// re-insert everything we saved before
foreach ( $ascript as $block)
{
$output = str_replace( $block[1] , $block[0] , $output );
}
foreach ( $atext as $block)
{
$output = str_replace( $block[1] , $block[0] , $output );
}
foreach ( $apre as $block)
{
$output = str_replace( $block[1] , $block[0] , $output );
}

// last not least: strip any remaining multiple spaces between tags...
$output = preg_replace('/>[\s]+</', "> <" ,$output );
//$output=preg_replace('/<!--([^\r\n].+)?-->/', '', $output);
// ...and also strip the <nocompress> tags for keeping any XHTML compliance
$output = str_replace("<nocompress>" ,"" ,$output );
$output = str_replace("</nocompress>" ,"" ,$output );

Может бы это и не работает, тк я вырезал код из продукта hellcat realtime page compressor для vbulletin не полностью. На некоторых страничках этот код вообще может зациклиться насовсем и я это наблюдал. С другой стороны продукт используют многие и это не совсем уж на коленке сделано. Как видно из кода, глючащие порции нужно заключать в нестандартный тег <nocompress>.

Если кто-то видел обычную программу на С - я бы с удовольствием попытался бы сделать из нее расширение для php на благо опенсорца.

Кнопка вызова админа ()
SilverMaster
На сайте с 08.10.2003
Offline
228
#17
T.R.O.N:
А разве это не достаточное основание больше не придумывать нелепых задач?

То что я не рассказал вам зачем действительно это нужно еще не значит что задача "нелепа". Это значит что вы не смогли понять и догадаться зачем это нужно...

А мне рассказывать вам нет смысла.

SilverMaster добавил 23.10.2009 в 17:41

netwind:
противники могут писать что угодно, но людям это нужно. gzip это хорошо, но можно сделать еще лучше.

спасибо дружище, отсюда и будем копать вглубь

N
На сайте с 06.05.2007
Offline
419
#18

Код для форума должен учесть много моментов чтобы не поломать скрипты. Честно говоря, смотрю на этот код и вижу что там перемудрили - простые однострочные комментарии с символами тире "-" не вырезаются.

вот это выглядит чрезмерно осторожным:


$output = preg_replace('/<!--[^\{\[\]*?[^b<!--\b]*?[^\b-->\b]*?-->/i', "", $output);
// We exclude HTML comments containing "{" and "[" // this way CSS definitions and AnyMedia stuff won't get striped

решил упростить до <!--[^\{\[\]*?]*?[^\b-->\b]*?-->

Но что это испортит ? Мне не понятно.

pelvis
На сайте с 01.09.2005
Offline
345
#19
T.R.O.N:
А разве это не достаточное основание больше не придумывать нелепых задач?

С чего вы взяли, что она нелепая? Мы в своей работе используем подобное.

Продаю вывески. Задарма и задорого (https://www.ledsvetzavod.ru/)
12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий