【问题标题】:Optimized order of HTML attributes for compression优化 HTML 属性的压缩顺序
【发布时间】:2011-04-26 11:13:25
【问题描述】:
我在某处读到,按特定顺序组织 HTML 属性可以提高 HTML 文档的压缩率。 (我想我是从谷歌或雅虎推荐中读到的,以获得更快的网站)。如果我没记错的话,建议是将最常见的属性放在首位(例如id 等),然后按字母顺序排列其余的。
我对此有点困惑。例如,如果将id 属性放在每个p 标记之后,则id 将包含唯一值。因此,重复的字符串将仅限于此:<p id="(假设有<p id="1"> 和<p id="2"/>)。因为id 的值必须是唯一的,所以我认为这实际上会对压缩产生不利影响。
我错了吗?
如果我需要浏览一个属性随机排序的静态网页,我应该使用什么逻辑来组织属性以实现最大压缩?
注意:我说的是 GZIP 压缩(如果重要的话):http://www.gzip.org/algorithm.txt
【问题讨论】:
标签:
algorithm
compression
gzip
huffman-code
【解决方案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 的首页,因其致力于以牺牲可读性、基本验证和各种良好实践为代价来减少字节数而臭名昭著,也不愿意使用一致的属性顺序。