Оптимизировать и сжать HTML - PullRequest
2 голосов
/ 16 февраля 2010

У меня есть несколько созданных вручную веб-страниц. При их развертывании я хотел бы запустить их через инструмент для создания новых меньших HTML-файлов с удалением лишних пробелов и т. Д.

Мы уже используем YUICompressor для нашего Javascript и нашего CSS, и мы склонны следовать всем методикам, описанным командой производительности Yahoo.

Есть хороший, бесплатный инструмент, который делает это? Я предпочитаю инструменты, которые вписываются в наш процесс развертывания аналогично YUICompressor.

Ответы [ 2 ]

4 голосов
/ 16 февраля 2010

HTML Tidy делает работу.

Я использую следующее в одном генерируемом документе (довольно большом). Это сэкономило мне около 10% от размера пост-gzip.

tidy -c -omit -ashtml -utf8 --doctype strict \
    --drop-proprietary-attributes yes --output-bom no \
    --wrap 0  source.html > target.html
  • -c - заменить лишние теги и атрибуты представления
  • -omit - удалить необязательные конечные теги
  • -ashtml - используйте HTML, а не XHTML (HTML более компактный, а XHTML не дает преимуществ в большинстве случаев использования)
  • -utf8 - Таким образом, нам не нужно использовать объекты для символов вне набора символов (объекты больше байтов)
  • --doctype strict - использовать Строгий (опять же, стройнее)
  • --drop-proprietary-attributes yes - избавиться от фирменного барахла
  • --output-bom no - спецификации вызывают проблемы у некоторых клиентов
  • --wrap 0 - очень длинные строки
3 голосов
/ 16 февраля 2010

Обычный старый minify также будет атаковать ваш HTML, если хотите.

Но минимизация HTML, как правило, не очень эффективна:

  • Свернуть пробелы до одного не так уж много. Если вы уже используете gzip / deflate, это позволит эффективно сжимать пробелы. Вы не можете удалить все пробелов, так как отдельные пробелы часто могут оказывать влияние на рендеринг, который желательно сохранить.

  • Вывод комментариев может иметь эффект, в зависимости от того, сколько комментариев у вас на самом деле. Но вы должны быть осторожны, чтобы не нажимать на условные комментарии.

  • Кроме того, в документе HTML мало что можно «минимизировать». Очевидно, что идея JS упаковки имен переменных до самой короткой возможной строки неприменима.

  • Делать все это с помощью регулярных выражений, как это делает большинство минифайеров, немного хитро. Вы должны придерживаться ограниченного «нормального» диапазона разметки, который не сработает.

При минимизации HTML вы, как правило, получаете меньшую выгоду (и меньшую выгоду после gzip), чем минимизацию JS / CSS, а для динамически генерируемых страниц у вас больше накладных расходов (так как вы не можете предварительно минимизировать их, как при использовании static сценарии / стилей). Некоторые языки шаблонов могут уже иметь встроенные функции для обрезки пробелов во время генерации; если доступно в вашей среде, используйте это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...