省略HTML可选标签

4
我刚刚阅读了来自Google的这篇文章。我一直认为关闭标签对于保持HTML文档的清洁和使其可机读性很重要,但他们推荐相反的做法。
你对此有何看法?

3
我不会这样做。看起来会很凌乱。 - Alex Ciminian
5个回答

10

Google处于一个相当不同寻常的境地,因为他们提供非常多副本的主要搜索页面,任何微小的页面大小节省很快就会累加起来。这意味着对于他们来说通过删除闭合标签和空格使页面更小是经济实惠的,但代价是难以维护。

你不是Google;这对你来说不太可能划算。你会注意到你链接的Google页面并没有省略它建议的标签,因为它不是Google服务很多次的关键页面之一。相比之下,www.google.com首页被极度精简了。

使用gzip/deflate压缩就可以获得大部分最小传输大小;进一步减少标记是一种不切实际的措施,除非你提供的内容很多,否则这将是一种过早的优化。


3

这完全取决于你的文档类型。如果你使用 HTML 4 transitional,那么可以不加结束标签。但如果你使用 XHTML 或 HTML 4 strict,则需要闭合标签。


我还没有查看,但是HTML5需要结束标签吗? - James Black
1
HTML5并没有改变这种情况;HTML样式序列化可以省略标签,而XHTML5序列化则不行。 - bobince
我开发CMS应用程序。我始终建议标签要正确关闭。因为如果你有一天需要转移内容,那么解析XML结构的东西比仅仅结束的东西要容易得多。我把标签看作括号。它们有一个{和一个}。 - BerggreenDK

2
HTML规范允许省略某些结束标签。通常这些标签不能自我嵌套,因此关闭标签永远不会引起歧义。以下是一个例子:
<p>A paragraph of text.
<p>Another paragraph of text.</p>

<div>A divider element...
<div>Another divider element...</div>

在第一个例子中,当你到达第二个<p>时,这意味着前一个段落已经结束了,因为你不能嵌套段落标签。浏览器会将其解释为:
<p>A paragraph of text.</p>
<p>Another paragraph of text.</p>

在第二个例子中,第二个<div>创建了一个嵌套的div元素,而</div>关闭了内部元素。你需要在想要结束外部元素的地方添加另一个</div>
然而,说了这么多,最好还是在编写标签时及时关闭所有标签以避免任何问题。这取决于你对白名单的熟悉程度。如果你忘记了,例如
必须始终关闭,那么你的布局就会一团糟。
正如bobince所说,使用gzip压缩后,这种区别并不重要。如果你有30个段落,有无关闭标签的版本之间的差异将是120字节。然而,如果两者都经过了gzip压缩,差异将非常小 - 不到10个字节。我建议按照你自己的习惯编写HTML。

0
只要您符合DTD的规范,我同意尝试将混乱最小化。就个人而言,我从未见过有人使用过a标签。
</br>

解析器应该根据DTD进行解析,因此它仍然是“机器可读”的。

2
事实上,人们使用缩写版本的 <br/> - Pascal Thivent
我应该澄清一下。我从来没有见过有人这样做,像是<br></br>,通常我只看到它是<br>。 - Jeff Storey
2
值得注意的是,在HTML中关闭BR元素是禁止的。与其他元素(例如P)不同,其中关闭标签是可选的。 - Ian Boyd

0

该文章建议省略本来就应该表示为单例的标签对的结束标记。由于它引用的标签,带有删除线,应该被用作单例,因此不需要结束标记,这既不是最佳实践建议也不是错误的。我建议完全忽略这篇文章,因为它试图推荐一种比从一开始就存在缺陷的做法更好的方法。

老实说,我不建议您从谷歌那里获取任何关于标记的建议,因为他们选择完全忽略任何标准,如果他们可以减少向最终用户提供的字符数。尝试验证他们的任何代码,并自行查看他们不是标记最佳实践应该解决的示例。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接