Почему люди минимизируют ресурсы, а не HTML? - PullRequest
41 голосов
/ 20 августа 2009

Почему люди предлагают минимизировать веб-ресурсы, такие как CSS и JavaScript, но никогда не предлагают минимизировать разметку? CSS и JavaScript могут использоваться на многих различных страницах, в то время как разметка загружается каждый раз, делая минимизацию разметки гораздо более важной.

Ответы [ 6 ]

29 голосов
/ 17 марта 2014

Ответы, написанные здесь, чрезвычайно устарели или даже иногда не имеют смысла. Многое изменилось со старого 2009 года, поэтому я постараюсь ответить на него правильно.

Краткий ответ - Вы обязательно должны минимизировать HTML . Это тривиально сегодня и дает примерно 5% ускорение . Для более длинного ответа прочитайте весь ответ

В старые времена люди вручную минимизировали css / js (запустив его через какой-то конкретный инструмент для минимизации). Было довольно сложно автоматизировать процесс и определенно требовал определенных навыков. Зная, что многие сайты высокого уровня даже сейчас не используют gzip (что тривиально), понятно, что люди неохотно минимизировали html.

Так почему же люди минимизировали js, а не html ? Когда вы минимизируете JS, вы делаете следующие вещи:

  • удалить комментарии
  • удаление пробелов (табуляции, пробелов, переносов)
  • изменить длинные имена на короткие (var isUserLoggedIn на var a)

Что дало много улучшений даже в старые времена. Но в html вы не могли сменить длинные имена на короткие, к тому же было почти нечего комментировать. Таким образом, единственное, что осталось, это удалить пробелы и переводы строк. Который дает только небольшое количество улучшения.

Один неверный аргумент, написанный здесь, заключается в том, что, поскольку контент подается с помощью gzip, минимизация не имеет смысла. Это совершенно неверно. Да, имеет смысл, что gzip уменьшает улучшение минификации, но зачем вам gzip комментарии, пробелы, если вы можете правильно их обрезать и gzip только важную часть. Это то же самое, что если у вас есть папка для архивирования, в которой есть какая-то хрень, которую вы никогда не будете использовать, и вы решили просто сжать ее, а не очистить и сжать.

Еще один аргумент, почему минимизировать бессмысленно, заключается в том, что это утомительно. Может быть, это было правдой в 2009 году, но после этого появились новые инструменты. Прямо сейчас вам не нужно вручную уменьшать разметку. С такими вещами, как Grunt , тривиально установить grunt-contrib-htmlmin и настроить его для минимизации вашего html. Все, что вам нужно, это как 2 часа, чтобы выучить хрюканье и все настроить, а затем все будет выполнено автоматически менее чем за секунду. Похоже, что 1 секунда (которую вы можете даже автоматизировать, ничего не делая с grunt-contrib-watch ) на самом деле не так уж плоха, примерно для 5% улучшения (даже с gzip).

Еще один аргумент в том, что CSS и JS являются статическими , а HTML генерируется сервером, поэтому вы не можете предварительно минимизировать его. Это было также верно в 2009 году, но в настоящее время больше и больше сайтов выглядят как одностраничное приложение, где сервер тонкий, а клиент выполняет всю маршрутизацию, создание шаблонов и другие. логика. Таким образом, сервер только дает вам JSON , а клиент отображает его. Здесь у вас есть много HTML для страницы и различных шаблонов.

Итак, чтобы закончить мои мысли:

  • Google минимизирует HTML.
  • pageSpeed ​​ просит вас минимизировать html
  • это тривиально
  • дает ~ 5% улучшения
  • это не то же самое, что gzip
25 голосов
/ 20 августа 2009

Одной из вероятных причин является то, что разметка обычно меняется НАМНОГО чаще, и ее придется минимизировать для каждой загрузки страницы. Например, на данной странице переполнения стека есть временные метки, имена пользователей и количество повторов, которые могут меняться при каждой загрузке страницы, а это значит, что вам придется минимизировать и для каждой загрузки страницы. С помощью «статических» файлов, таких как css и javascript, вы можете минимизировать гораздо реже, так что, по мнению некоторых, это стоит того, чтобы работать заранее.

Учтите также, что каждый крупный веб-сервер и браузер поддерживают gzip, который в любом случае сжимает всю вашу разметку ( быстро ) на лету. Поскольку минимизация медленнее и намного менее эффективна, чем gzipping, веб-мастера могут решить, что минимизация для каждой загрузки страницы не стоит затрат на обработку.

13 голосов
/ 21 августа 2009

Учтите это:

HTML:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>Demo</title>
<link rel="stylesheet" type="text/css" href="nonminify.css"/>
</head>
<body>
<div title="My   non   minifiable   page">
    <p class="http://www.example.com/classes/class/lorem-ipsum">

            Lorem ipsum dolor sit amet, consectetur adipisicing elit, 

            sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. 

            Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris 

            nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in 

            reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla 

            pariatur. Excepteur sint occaecat cupidatat non proident, sunt in 

            culpa qui officia deserunt mollit anim id est laborum.

    </p>
</div>
</body>
</html>

С этим файлом CSS:

div[title="My   non   minifiable   page"] 
      p[class~="http://www.example.com/classes/class/lorem-ipsum"]
{
    white-space:pre;
}

Учитывая это, для минимизатора HTML, который может видеть только HTML-файл, практически невозможно найти что-либо, что он может безопасно минимизировать.

5 голосов
/ 03 мая 2011

Page Speed ​​рекомендует минимизировать разметку:

http://code.google.com/speed/page-speed/docs/payload.html#MinifyHTML

5 голосов
/ 20 августа 2009

Полагаю, это сложно, потому что иногда такие вещи, как пробелы, используются для форматирования, возможно, в зависимости от типа документа.

3 голосов
/ 20 августа 2009

Разметка имеет тенденцию генерироваться динамически в наши дни, и даже когда статический, как правило, есть куча страниц. JavaScript и CSS обычно минимизируются по принципу «один файл на сайт» и, следовательно, их намного проще минимизировать вручную (или в сценарии).

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