Как минимизировать HTML-код?
Моя идея состоит в том, чтобы каким-то образом минимизировать HTML-код на стороне сервера, чтобы клиент получал меньше байтов.
Что я имею в виду под"minify"?
Не застегивается. Больше похоже, например, что создатели jQuery делают с .мин .версии js . Другими словами, Мне нужно удалить ненужные пробелы и новые строки, но я не могу удалить так много, что представление HTML-изменений (например, удалить пробелы между фактическими словами в абзаце).
Есть ли какие-либо инструменты, которые могут сделать это? Я знаю, что естьHtmlPurifier . Может ли он это сделать? Есть еще варианты?
P. S. пожалуйста, не предложить регулярное выражение х годах. Я знаю, что только Чак Норрис может разбирать HTML с ними. =]
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 обратно в читаемую форму.