Подтвердить что ты не робот

Почему люди минимизируют активы, а не HTML?

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

4b9b3361

Ответ 1

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

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

Ответ 2

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

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

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

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

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

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

Один неправильный аргумент, написанный здесь, состоит в том, что, поскольку контент передается с gzip, минимизация не имеет смысла. Это совершенно неправильно. Да, имеет смысл, что gzip уменьшает улучшение minification, но почему вы должны 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

Ответ 3

Рассмотрим это:

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 minifier это действительно невозможно, он может видеть только HTML файл, чтобы найти что-нибудь, что можно безопасно минимизировать.

Ответ 4

Я полагаю, это сложно, потому что иногда такие вещи, как white-space, используются для форматирования, возможно, в зависимости от типа doctype.

Ответ 6

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