Уменьшение HTML

Я искал в Google, но не могу найти никаких HTML-скриптов minifacation.

Мне пришло в голову, что, возможно, в минифакации HTML нет ничего больше, чем удаление всех ненужных пробелов.

Я что-то упустил или мой Google Fu был потерян?

Не могли бы вы просто использовать gzip на своем сервере?

bchhun 21.01.2009 21:33

Я хотел бы увидеть сравнение сжатого с помощью gzip HTML и уменьшенного, а затем сжатого с помощью gzip HTML. Мне кажется, что минимизированный, сжатый с помощью gzip HTML меньше.

Lance Fisher 21.01.2009 22:05

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

Mr. Shiny and New 安宇 13.11.2009 23:06
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
13
3
7 316
12
Перейти к ответу Данный вопрос помечен как решенный

Ответы 12

Вы можете найти хорошие ссылки здесь на такие вещи, как HTML tidy и другие.

Если вы не хотите использовать одну из этих опций, у Prototype есть средство для очистить пробелы в DOM. Вы можете сделать это самостоятельно и скопировать его через «Просмотр созданного исходного кода» на панели инструментов веб-разработчика расширения Firefox. Затем вы можете заменить исходный html исправлением прототипа. Извините за то, что не сделал этого явного никфа.

(Рекомендую первую ссылку)

Prototype - это клиентский скрипт, поэтому HTML уже будет отправлен без миниатюры, что противоречит цели ...

nickf 22.01.2009 03:32

Да, я думаю, это в значительной степени удаление пробелов и комментариев. Вы не можете заменять идентификаторы более короткими, как в javascript, поскольку есть вероятность, что классы CSS или javascript будут зависеть от этих идентификаторов.

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

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

mercator 22.01.2009 03:55

На этот блог 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 (&nbsp; or &shy; 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 ") {"

Roman Losev 25.03.2015 12:10

Я использовал это регулярное выражение годами, без проблем: 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.

Результат будет в минимальной папке

  1. откройте консоль. запустить -> npm install html-minifier -g
  2. создать .bat. не забудьте изменить маршрут в команде cd. Поменять папку в bat-файле проще, чем копировать и вставлять.
  3. войдите в консоль в папку .bat и запустите ее.

cd 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

Другие вопросы по теме