Оптимизирован порядок атрибутов HTML для сжатия - PullRequest
10 голосов
/ 17 октября 2010

Я где-то читал, что организация атрибутов HTML в определенном порядке может улучшить степень сжатия для документа HTML.(Я думаю, что я прочитал это из рекомендаций Google или Yahoo для более быстрых сайтов).Если я правильно помню, рекомендация заключалась в том, чтобы сначала поместить наиболее распространенные атрибуты (например, id и т. Д.), А затем расположить остальные в алфавитном порядке.

Я немного смущен этим.Например, если атрибуты id ставятся сразу после каждого тега p, id будет содержать уникальные значения.Таким образом, дублирующаяся строка будет ограничена этим: <p id=" (скажем, было <p id="1"> и <p id="2"/>).Поскольку значение id должно быть уникальным, я считаю, что это фактически оказывает неблагоприятное воздействие на сжатие.

Я ошибаюсь?

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

ПРИМЕЧАНИЕ. Я говорю о сжатии GZIP (если это имеет значение): http://www.gzip.org/algorithm.txt

1 Ответ

13 голосов
/ 17 октября 2010

Ваша цель - поощрять повторное содержание.Так что <p class="foo" id="a">bar</p>...<p class="foo" id="b">bof</p> действительно может быть легче сжать, чем <p id="a" class="foo">bar</p>...<p id="b" class="foo">bof</p>, и оба обычно сжимаются легче, чем <p class="foo" id="a">bar</p>...<p id="b" class="foo">bof</p>.

Но на самом деле, разница будет крошечной.Вам было бы гораздо лучше просто написать свою разметку наиболее читабельным образом для вашей собственной выгоды и позволить mod_deflate продолжить свою работу.При такой микрооптимизации вам придется пройти долгий путь, чтобы сохранить даже один TCP-пакет, и повторное предположение о компрессоре на микроуровне часто может привести к неожиданным, возможно, отрицательным результатам.

Для некоторых элементов удобочитаемость может также означать, что сначала нужно поставить «общие» атрибуты, например, <input type> обычно является первым перечисленным атрибутом;Обычно вы разрабатываете свой собственный стиль порядка атрибутов, и, если он будет согласованным, я полагаю, это сэкономит вам несколько байтов здесь и там.Я бы не выбрал сырой алфавит в качестве последовательного порядка.Все, что нужно для этого, - это то, что будет производить Canonical XML.

Даже первая страница google.com, печально известная своей приверженностью сокращению байтов за счет читабельности, базовой проверки и всех видов полезной практики, не стоит использовать один непротиворечивый порядок для атрибутов.

...