Я искал в Google, но не могу найти никаких HTML-скриптов minifacation.
Мне пришло в голову, что, возможно, в минифакации HTML нет ничего больше, чем удаление всех ненужных пробелов.
Я что-то упустил или мой Google Fu был потерян?
Я хотел бы увидеть сравнение сжатого с помощью gzip HTML и уменьшенного, а затем сжатого с помощью gzip HTML. Мне кажется, что минимизированный, сжатый с помощью gzip HTML меньше.
@Lance Fisher: В моих тестах минифицированный JS / CSS был меньше после Gzip, чем неминифицированный. Однако есть потенциальные ловушки, если вы минимизируете HTML; Я бы сказал, что для существующих страниц этого делать не стоит.






Вы можете найти хорошие ссылки здесь на такие вещи, как HTML tidy и другие.
Если вы не хотите использовать одну из этих опций, у Prototype есть средство для очистить пробелы в DOM. Вы можете сделать это самостоятельно и скопировать его через «Просмотр созданного исходного кода» на панели инструментов веб-разработчика расширения Firefox. Затем вы можете заменить исходный html исправлением прототипа. Извините за то, что не сделал этого явного никфа.
(Рекомендую первую ссылку)
Prototype - это клиентский скрипт, поэтому HTML уже будет отправлен без миниатюры, что противоречит цели ...
Да, я думаю, это в значительной степени удаление пробелов и комментариев. Вы не можете заменять идентификаторы более короткими, как в javascript, поскольку есть вероятность, что классы CSS или javascript будут зависеть от этих идентификаторов.
Кроме того, вы должны быть осторожны при удалении пробелов и убедитесь, что всегда остается хотя бы пробельный символ, иначе весь ваш текст будет выглядеть так же.
И даже комментарии удалять небезопасно. Вы бы тоже избавились от условных комментариев IE. Иногда я использовал комментарии, чтобы скрыть пробелы, вызывающие ошибки в IE.
На этот блог Wordpress есть довольно продолжительное обсуждение этой темы. Здесь вы можете найти очень длинное предлагаемое решение с использованием PHP и HTML Tidy.
Вне HTML Tidy / удаления пробелов, как упоминалось в других ответах, не так много.
Это скорее ручная задача: вытаскивание атрибутов стиля в CSS (надеюсь, вы не используете теги FONT и т. д.) С использованием меньшего количества тегов и атрибутов, где это возможно (например, не встраивание <strong> тегов в элемент, а использование CSS для создания весь элемент font-weight: bold, если, конечно, не имеет смысла использовать> strong <) и т. д.
Иногда, в зависимости от закрывающих тегов и / или CSS, пробелы могут быть значительными.
Вы должны быть осторожны при удалении материала из HTML, поскольку это хрупкий язык. В зависимости от того, как закодированы ваши страницы, некоторые из этих пробелов могут быть более значительными; также, если у вас есть стили CSS, такие как white-space: pre, вам может потребоваться оставить пробелы. Кроме того, существует множество ошибок браузера и т. д., И в основном каждый символ в файле HTML может быть там, чтобы удовлетворить какое-то требование или успокоить какой-то браузер.
На мой взгляд, лучше всего разработать страницы с помощью методов CSS (недавно я смог взять важную страницу на сайте, над которым я работаю, и уменьшить ее размер на 50%, просто перекодировав ее с помощью CSS вместо таблиц и вложенного стиля. = "..." атрибуты). Затем используйте GZip, чтобы уменьшить размер ваших страниц для браузеров, поддерживающих gzip. Это сэкономит пропускную способность при сохранении структуры HTML.
Нельзя использовать JavaScript в качестве декомпрессора для сжатой строки HTML, например, иметь сборку DEV для несжатого формата, запустить сценарий публикации, чтобы сжать сборку DEV в производство и прикрепить JavaScript к источнику HTML (с пробелы и такие удалены как раньше)?
Пропускная способность на сервере будет уменьшена, но обратная сторона - это гораздо большая нагрузка на клиента при распаковке строки в HTML. Также необходимо включить JavaScript и уметь преобразовывать распакованную строку в HTML.
Я не говорю, что это определенное решение, но что-то, что может сработать - все зависит от того, смотрите ли вы в отношении пропускной способности без пользовательских разрешений / системной спецификации JavaScript или чего-то подобного.
В противном случае ищите сценарии обфускации, простой поиск в Google дает http://tinyurl.com/phpob - в зависимости от того, что вы ищете, должен быть доступный программный пакет.
Если я ошибаюсь, кричите, пожалуйста, и я посмотрю, что еще я могу сделать.
Удачи!
Я еще не пробовал, но htmlcompressor - это минификатор HTML, если вы хотите попробовать.
Недавно я нашел скрипт на основе PHP, который минимизирует ваши сайты HTML - Inline css - Inline javascript на лету, он называется Динамический компрессор веб-сайтов
Вот минификатор для HTML5, написанный на PHP.
<?PHP
$in=file_get_contents('path/to/source.html');
//Strips spaces if there are more than one.
$in=preg_replace('/\s{2,}/m',' ',$in);
//trim
$in=preg_replace('/^\s+|\s+$/m','',$in);
/*Strips spaces between tags.
Use ( or ­ or better) padding or margin if necessary, otherwise the html
parser appends a one space textnode.*/
$in=preg_replace('/ ?> < ?/','><',$in);
//Removes tag end slash.
$in=preg_replace('@ ?/>@','>',$in);
//Removes HTML comments except conditional IE comments.
$in=preg_replace('/<!--[^\[]*?-->/','',$in);
//Removes quotes where possible.
$in=preg_replace('/ = "([^ \'"\=><]+)"/','=$1',$in);
$in=preg_replace("/='([^ '\"\=><]+)'/",'=$1',$in);
file_put_contents('path/to/min.html',$in);
?>
После этого у вас есть однострочный, более короткий HTML-код.
Лучше вы создадите массив из регулярных выражений, но при этом избегайте обратных косых черт.
«Удаляет цитаты, где это возможно». , также удаляет проверки IF в javascript .. Пример: "if (typeof variable! = = " object ") {"
Я использовал это регулярное выражение годами, без проблем: s/>\s*</></g
В Python re.sub(r'>\s*<', '><', html)
Или в PHP preg_replace('/>\s*</', '><', $html);
Это удалило все пробелы между тегами, но нигде, это довольно безопасно (но не идеально, есть ситуации, когда это сломается, но они редки).
Моя основная причина для этого не в скорости / размере файла, а в том, что пробелы часто вводят, ну, пробелы. Это было бы нормально, но когда вы начинаете возиться с DOM с помощью Javascript, часто теряются пробелы, создавая (незначительные) различия в макете.
Рассмотреть возможность:
<div>
<a>link1</a>
<a>link2</a>
</div>
Между ссылками есть пробел, но теперь я делаю что-то вроде:
$('div').append('<a>link3</a>')
И нет места ... Мне нужно вручную добавить пространство в мой JS, что довольно уродливо и подвержено ошибкам ИМХО.
Если вы установили node.js и являетесь пользователем Windows, вы можете создать этот .bat Он уменьшит весь HTML в вашей папке во вложенной папке min.
Результат будет в минимальной папке
npm install html-minifier -gcd the_destination_folder
dir /b *.HTML > list1.txt
for /f "tokens=*" %%A in (list1.txt) do html-minifier --collapse-whitespace --remove-comments --remove-optional-tags %%~nxA -o min\%%~nxA
pause
Не могли бы вы просто использовать gzip на своем сервере?