我在某处读到按特定顺序组织HTML属性可以提高HTML文档的压缩率。 (我想我是从谷歌或雅虎推荐更快的网站阅读此内容)。如果我没记错的话,建议首先放置最常见的属性(例如id
等),然后按字母顺序排列。
我有点困惑。例如,如果id
个属性在每个p
标记之后放置,则id
将包含唯一值。因此,重复的字符串将限于此:<p id="
(例如<p id="1">
和<p id="2"/>
)。因为id
的值必须是唯一的,所以我认为这实际上会对压缩产生负面影响。
我错了吗?
如果我需要浏览具有随机排序属性的静态网页,我应该使用什么逻辑来组织属性以实现最大压缩?
注意:我说的是GZIP压缩(如果重要的话):http://www.gzip.org/algorithm.txt
答案 0 :(得分:13)
您的目标是鼓励重复内容。因此,<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数据包,并且在微观级别上再次猜测压缩器通常会产生意外的,可能是负面的结果。
对于某些元素,可读性也可能意味着首先放置'common'属性,例如<input type>
通常是第一个列出的属性;通常你会计算出你自己的属性顺序样式,如果它是一致的,我想在这里和那里可以节省几个字节。我不会选择原始字母作为一致的顺序。所有这一切都取决于它是Canonical XML将产生的。
即使是google.com的首页,因其致力于以可读性,基本验证和各种良好做法为代价来削减字节而臭名昭着,并不打算使用一致的属性顺序。