Оптимизированный порядок атрибутов HTML для сжатия

Я где-то читал, что организация 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

Ваша цель - поощрять повторный контент. Таким образом, <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> обычно является первым перечисленным атрибутом; как правило, вы будете разрабатывать свой собственный стиль порядка атрибутов, и если он будет согласован, я полагаю, что вы сохраните несколько байтов здесь и там. Я бы не выбрал необработанный алфавит, как последовательный порядок. Все, что у него получилось, это то, что будет производить канонический XML.

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