Как минимизировать HTML-код?


Моя идея состоит в том, чтобы каким-то образом минимизировать HTML-код на стороне сервера, чтобы клиент получал меньше байтов.

Что я имею в виду под"minify"?

Не застегивается. Больше похоже, например, что создатели jQuery делают с .мин .версии js . Другими словами, Мне нужно удалить ненужные пробелы и новые строки, но я не могу удалить так много, что представление HTML-изменений (например, удалить пробелы между фактическими словами в абзаце).

Есть ли какие-либо инструменты, которые могут сделать это? Я знаю, что естьHtmlPurifier . Может ли он это сделать? Есть еще варианты?

P. S. пожалуйста, не предложить регулярное выражение х годах. Я знаю, что только Чак Норрис может разбирать HTML с ними. =]

4 8

4 ответа:

Вы можете разобрать HTML-код в DOM-дерево (которое должно содержать пробелы содержимого в узлах), а затем сериализовать его обратно в HTML, без каких-либо приукрашивающих пробелов.

Немного поздно, но все же... С помощью output_buffering это так просто:

function compress($string)
{
    // Remove html comments
    $string = preg_replace('/<!--.*-->/', '', $string);

    // Merge multiple spaces into one space
    $string = preg_replace('/\s+/', ' ', $string);   

    // Remove space between tags. Skip the following if
    // you want as it will also remove the space 
    // between <span>Hello</span> <span>World</span>.
    return preg_replace('/>\s+</', '><', $string);      
}

ob_start('compress');

// Here goes your html.    

ob_end_flush();
Есть ли какие-нибудь инструменты, которые могут это сделать?

Да, вот инструмент, который вы можете включить в процесс сборки или работать в слое веб-кэша: http://code.google.com/p/htmlcompressor/

Или, если вы ищете инструмент для минимизации HTML, который вы вставляете, попробуйте: http://www.willpeavy.com/minifier/

Вы можете использовать инструмент Pretty Diff: http://prettydiff.com/?m=minify&html Он также будет минимизировать любые CSS и JavaScript в HTML-коде, и минимизация происходит регрессивным образом, чтобы не препятствовать будущему украшению HTML обратно в читаемую форму.