用于压缩的HTML属性的优化顺序

时间:2010-10-17 00:04:16

标签: algorithm compression gzip huffman-code

我在某处读到按特定顺序组织HTML属性可以提高HTML文档的压缩率。 (我想我是从谷歌或雅虎推荐更快的网站阅读此内容)。如果我没记错的话,建议首先放置最常见的属性(例如id等),然后按字母顺序排列。

我有点困惑。例如,如果id个属性在每个p标记之后放置,则id将包含唯一值。因此,重复的字符串将限于此:<p id="(例如<p id="1"><p id="2"/>)。因为id的值必须是唯一的,所以我认为这实际上会对压缩产生负面影响。

我错了吗?

如果我需要浏览具有随机排序属性的静态网页,我应该使用什么逻辑来组织属性以实现最大压缩?

注意:我说的是GZIP压缩(如果重要的话):http://www.gzip.org/algorithm.txt

1 个答案:

答案 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的首页,因其致力于以可读性,基本验证和各种良好做法为代价来削减字节而臭名昭着,并不打算使用一致的属性顺序。