netwind

Рейтинг
419
Регистрация
06.05.2007

противники могут писать что угодно, но людям это нужно. 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 на благо опенсорца.

так таблиц или баз? все вышеприведенные рассуждения относятся к таблицам. если у вас в одной базе просто свалены таблицы с разным префиксами, то тут уже не так важно как хранить.

В общем случае кеш mysql лучше работает когда много маленьких баз, потому что достаточно обновить одну запись и из кеша вычищаются все запросы с данными из этой таблицы. Опять же параллизм выше даже если использовать myisam.

Другое дело что работать с кучей таблиц неудобно. Допустим вы захотите какую-нибудь глобальную статистику по всем сайтам рассчитать.

seomazzi:
Не много не понял, вы предлагаете проге ходить через что?

ну значит вам это и не грозит.

Можно поставить socks-прокси на компьютер и использовать обертку freecap для запуска некоторых программ. Остальные пойдут обычным путем.

Если прога постоянно работает с ограниченным числом хостов или сетей и остальные программы с ним не работают - можно прописать туда роутинг и будет выбираться нужный ip.

Какой вы все-таки упорный. Прошлый раз доказывали, что ваш мегаскрипт не имеет отношения к openx при очевидных родственных признаках ( /ru/forum/281653) , а теперь думаете, что вам поверят про два года безупречной работы ?

Кстати, какой скрипт зазендили на этот раз? Может, как обычно, исходный скрипт даже лучше и на него стоит обратить внимание ?

Ну если уж на то пошло, то и правило должно реально работать : то есть по команде iptables -nvL -t nat должно быть видно что пакеты идут и счетчики увеличиваются. А то ведь можно других правил намутить (что в принципе было бы так же интересно увидеть)

Andreyka, ну, Андрей, ну сколько можно? Платить деньги чтобы доказать себе, что вы выдумали очередную хабрадурь - на это никто не пойдет.

Это просто новое слово в netfilter, когда третий пакет с данными проходит через PREROUTING.

Пакет проходит там один раз и только первый. Дальше уже невозможно сменить адрес назначения DNAT или привязку на порт -j REDIRECT. Это противоречит всем концепциям работы netfilter.

Если вы знаете какой-то секрет, просто скажите. Делать тут ничего не надо - все люди подкованные и уж c iptables разберутся. Никакой коммерческой тайны тут и не видно.

Andreyka, эта строка не может работать ни при каких правилах. Если работает - настройте виртуальную машинку и выложите образ, а мы разберемся почему оно работает. Времени это займет немного.

Конечно понятно, что вы можете решить проблему по-другому, например правилами squid или nginx, но сам по себе факт публикации непроверенной информации огорчает. Да и весьма заманчиво было бы отбрасывать пакеты на уровне ядра.

myhand:
первый пакет - с флагом syn, нет там данных

ok. ну тогда он использовал это в INPUT или FORWARD, где проходит каждый пакет.

В любом случае, раз ни при каких условиях последующие пакеты соединения не попадают в цепочку PREROUTING, это решение не может работать вообще никак.

Всего: 6293