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

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

 Breakthrough20 авг. 2009 г., 18:35
Еще лучше люди, которые думают, что они экономят пропускную способность, «минимизируя» код на стороне сервера (например, PHP) ...
 Salvador Dali02 сент. 2014 г., 11:28
Содержание HTML должно быть минимизировано. Раньше это было трудно сделать, и это дало действительно небольшой выигрыш. Проверьтемой ответ
 Jason20 авг. 2009 г., 17:05
хороший вопрос. вероятно, потому что разработчики любят видеть их красивый код.
 GitaarLAB24 янв. 2014 г., 02:48
@Breakthrouh: Я понимаю, что вы говорите (относительно вывода в браузер), но мне интересно ... если веб-сервер передает сценарий php (файл) (необязательно внешнему) php fcgi-серверу, я бы предположил, что пропускная способность на fcgi-сервере действительно сохраняется ... Что также заставляет меня задуматься, экономит ли «минимизированный» php-скрипт память (я имею в виду, прежде чем он будет преобразован в байт-код и выполнен) ..

Ответы на вопрос(6)

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

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

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

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

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

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

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

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

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

Другой аргумент, почему бессмысленно заниматься минификацией, заключается в том, что это утомительно. Возможно, это было правдой в 2009 году, но после этого появились новые инструменты. Прямо сейчас вам не нужно вручную уменьшать разметку. С такими вещами, какхрюкать установить тривиальноГрунт-вно-htmlmin и настроить его для минимизации вашего HTML. Все, что вам нужно, это как 2 часа, чтобы выучить хрюканье и все настроить, а затем все будет выполнено автоматически менее чем за секунду. Звучит, что 1 секунда (которую вы даже можете автоматизировать, чтобы ничего не делатьГрунт-вно-часы) не так уж и плохо примерно для 5% улучшения (даже с gzip).

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

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

Google минимизирует HTML.PageSpeed просит вашего минимизировать HTMLэто тривиальноэто дает ~ 5% улучшенияэто не то же самое, что gzip
 Mahdi Younesi18 авг. 2017 г., 12:58
Минификация снижает удобство обслуживания ради ... обычно около 4-8 КБ экономии на размере сайта. Вы можете получить большую экономию, сжав один jpg на сайте и удалив метаданные изображения.
 Benjamin Albert28 мар. 2016 г., 13:57
О HTML, генерируемом сервером, я думаю, что стоит упомянуть такие движки шаблонов, какнефрит которые позволяют вам писать хорошо отформатированную разметку в исходном коде и выводить уменьшенный HTML по умолчанию. Это также позволяет вам легко иметь дело с делами, подобными тем, которые упомянуты вОтвет Алохчи
 Salvador Dali18 авг. 2017 г., 20:41
@MahdiYounesi никто не поддерживает минимизированные активы. Когда вы минимизируете HTML, вы не удаляете существующую неминифицированную версию. Также никто не сказал вам, что после минимизации html вы не должны улучшать свои изображения / js, uze gzip и т. Д. Вы можете делать все что угодно.
 paul2305 нояб. 2017 г., 19:13
@SalvadorDali Разве идея современного гибкого рабочего пространства не в том, что цикл между обслуживанием -> обновлениями -> использованием короткий? Минимизация увеличивает это, так как вам приходится расшифровывать отчеты об ошибках клиентов без потенциальных дополнительных данных, предоставляемых браузером клиентов.

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

 Alohci21 авг. 2009 г., 10:28
Я не отрицаю, что, вероятно, 99% HTML-страниц, используемых в Интернете, могли бы сократить свои пустые пространства без разрыва, но будет 1%, если это не так. Я желаю вам удачи с вашим HTML Minifier, но если он используется часто, ожидайте получить странные отчеты об ошибках от веб-авторов, обвиняющих Minifier в взломе их веб-страниц.
 austin cheney21 авг. 2009 г., 00:19
Я подозреваю, что объявление пробела: pre является исключением, а не нормой, так как оно используется очень редко.
 austin cheney02 нояб. 2009 г., 05:35
@Alohci, я только что заметил твои комментарии. Я написал минимизатор разметки, который не мешает анализу содержимого. Все пробелы, если нет преднамеренно примененного противоположного условия представления, в разметке разбираются до разбора, а пробелы между тегами, кроме синглетонов, полностью удаляются. Знание правильных правил пробелов для разметки позволяет создать условие, при котором разметка может быть минимизирована без вреда автоматически каждый раз.
 Alohci21 авг. 2009 г., 10:21
Пробел во время синтаксического анализа размечается, но каждый символ пробела передается в DOM. видетьwhatwg.org/specs/web-apps/current-work/multipage/... а такжеwhatwg.org/specs/web-apps/current-work/multipage/..., Свертывание пробела происходит в фазе рендеринга, обычно применяя правило пробела: нормальное css. Если это не так, как браузеры могут реализовать пробелы: pre?
 Alohci21 авг. 2009 г., 02:16
Правда, но это не просто пробел: предварительно конечно. Ходьба по DOM JavaScript также может делать предположения о наличии пробелов, которые могут изменить минификаторы. Как ни странно, пробел имеет большое значение в HTML, тогда как в CSS и JavaScript это в основном не так
Решение Вопроса

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

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

 T.J. Crowder20 авг. 2009 г., 17:34
Для меня это отдельные домены. Минимизация - это удаление шелухи, ненужного материала, который не влияет на результат. Сжатие - это сжатие остатка. Gzip отлично работает, но нет смысла в gzipping <! - end head div ->, когда мы можем уменьшить его до нуля.
 Triptych20 авг. 2009 г., 17:16
@ Адриан, я бы не пошелдовольно так далеко. Иногда есть веские причины для сохранения каждого байта, который вы можете. Причина того, чтоI Хотя ненависть сводится к тому, чтобы минимизировать отладку в браузере, и обычно есть гораздо лучшие способы ускорить работу сайта.
 Triptych20 авг. 2009 г., 17:11
Минимально значимый. Сокращение на ~ 70% при помощи gzip-файла и ~ ~ 5% -ное сокращение при минимизации gzip-файла.
 ceejayoz20 авг. 2009 г., 17:08
CSS и JS также можно использовать в gzipp, но минимизация все еще имеет значительные преимущества.
 Triptych21 авг. 2009 г., 13:16
@rjmunro - это был просто скачок логики. Вы, безусловно, теряете больше времени на минимизацию серверной части на лету, чем вы тратите время на синтаксический анализ на клиенте. Gzipping уменьшает количество данных, которые браузер должен загрузить, что, как правило, значительно превышает время, необходимое для распаковки.

Ваш ответ на вопрос