0

我记得前一阵子读到,在某些情况下省略结束标记(</li>例如)会加快网页的呈现(和加载/解析,因为字节数较少)?

不幸的是,我忘记了我在哪里看到的,但我记得它说这个功能是 HTML 4.0 特有的。

由于我不再有权访问此来源,我想知道是否有人可以确认这一点或链接到 w3c 上的文档(因为我自己无法找到它)?

谢谢!


编辑:忘了提到我的意思是问这种行为是否也适用于 HTML5。


编辑2:我设法再次找到这篇文章,它确实提到它只加快了页面的下载速度,而不是实际渲染:

省略这些元素的结束标签的一个很好的原因是,它们会在页面下载中添加额外的字符,从而减慢页面速度。如果您正在寻找加快网页下载速度的方法,那么摆脱可选的结束标签是一个不错的起点。对于具有大量段落或表格单元格的文档,这可以节省大量资金。

抱歉问了一个毫无意义的问题!:(

4

6 回答 6

3

这是 HTML 4.01 元素的列表。

http://www.w3.org/TR/html401/index/elements.html

结束标签列说明结束标签是可选的。
但是,请注意,这仅在 HTML 4.01 中有效。在 Xhtml 中,所有结束标记都是必需的。不是 100% 确定 HTML5。

我曾经写过一个 HTML 解析器,相信我,如果你是一个解析器并且你在 a 中<p>并且你遇到一个</table>结束标记,那么检查你的文档树是否正确会更慢,如果是这样,关闭当前<p>优先,而不是仅仅遇到一个</p>.

编辑:
啊,找到了:http
://dev.w3.org/html5/html-author/#index-of-elements 与 HTML 4.01 的要求相同。

新编辑:
哦,那是 2009 年的一页。这个是最新的: http:
//dev.w3.org/html5/spec/syntax.html#optional-tags

于 2012-04-12T20:06:32.773 回答
2

AFAIK,在 XHTML 中,您必须始终至少自行关闭标签<img ... />

在 HTML(非 xml-html)中,一些标签不需要关闭。<img>例如。但是,我建议确保您确切知道您的目标是哪个版本,并使用 W3C 的验证服务进行仔细检查。

http://validator.w3.org/

我看不出这会如何加快速度,除了你必须每页发送更少的数据字节(某些标签没有 / ,其他标签没有结束标签。)至于构建 DOM,我不知道不知道给定实现(webkit、mozilla 等)的细节以知道哪种方式解析速度更快。我想 XML 只是因为它更规则。

编辑:是的,这种行为在 HTML5 中可用。请注意,帮助页面令人困惑,例如:

http://www.w3schools.com/html5/tag_meta.asp

非 xml-html 中的 Meta 不需要 /,但他们可以拥有它。由于(在我看来)倾向于 XML 风格的 HTML 的结尾斜线在书面 HTML 中更为普遍,但您可以看到它们在文档中使用了这两种样式。验证器将让您确定可以逃脱什么。:)

于 2012-04-12T19:57:22.917 回答
2

某些版本的 HTML 规范中的某些标签具有可选的结束标签。但是,我认为排除结束标签通常被认为是不好的形式。

如前所述,li在 html4 中,结束标记是可选的:

http://www.w3.org/TR/html401/struct/lists.html#h-10.2

所以从技术上讲这是有效的:

<ul>
    <li>
        text
    <li>
        <span>stuff</span>
</ul>

但是你每个只保存 5 个字符li,不值得你在可读性/可维护性方面失去什么。

编辑:HTML5 规范有点有趣:

如果 li 元素后面紧跟着另一个 li 元素,或者父元素中没有更多内容,则可以省略 li 元素的结束标记。

于 2012-04-12T20:09:31.343 回答
2

浏览器通常可以原谅省略结束标签(它通常足够聪明,可以知道你在做什么)。但是,未关闭标签所具有的任何 css 或 js 标记属性都可能影响后代和/或兄弟标签,让您对发生的事情摸不着头脑。

虽然 XHTML 确实希望您为自包含标签添加一个正斜杠,但 HTML 5 却没有。

XHTML: <img src="" />
HTML5: <img src="">
于 2012-04-12T20:11:26.347 回答
2

如果您使用 xhtml DOCTYPE 编写,那么答案是“是”,它们是必需的。xhtml 文档需要是有效的 XML,这意味着所有标签都需要正确关闭。

HTML 文档不那么繁琐。有些标签被指定为“自动关闭”,这意味着您不需要专门关闭它们。其中包括<br>,<img>等。

浏览器通常非常宽松,因为它们需要能够处理写得不好的代码。但请注意,有时跳过结束标记会导致不同的浏览器以不同的方式解释您的代码,并产生难以调试的布局故障。

就页面加载速度而言,下载速度和带宽成本的边际收益可能是对的,但这将是边际收益。在渲染方面,我怀疑如果您提供无效的 HTML,您实际上会失去速度,因为浏览器必须更加努力地解析它。

因此,即使有速度增益,它也将是微不足道的,我不认为故意跳过结束标签是值得的练习。如果您正在运行一个流量很大的网站,那么减少带宽可能会有所帮助,但我们中很少有人为 Facebook 或 Google 写作;对于几乎所有其他人来说,编写有效的代码比尝试削减那几个字节要好。

如果您担心带宽和页面加载速度,可能还有其他更好的方法来减少页面加载大小。例如,使用 gZip 压缩文件将大大减少您的带宽,对您的代码或浏览器的影响为零。gZip 压缩可以在您的网络服务器中配置,因此您只需打开它就可以忘记它。您还可以通过去除不必要的空白来“缩小”您的 CSS 和 JS 代码。(HTML 也可以在一定程度上缩小,但要注意空格在 HTML 中与语法相关,因此缩小可能不是在所有情况下都适合做的事情)。

于 2012-04-12T20:14:13.897 回答
1

在 1999 年成为 W3C 推荐标准的 HTML 4.01 中,您是对的:

9.3.1 段落:P 元素

开始标签:必需,结束标签:可选

http://www.w3.org/TR/1999/REC-html401-19991224/struct/text.html#h-9.3.1

至于<li>,

开始标签:必需,结束标签:可选

http://www.w3.org/TR/1999/REC-html401-19991224/struct/lists.html#h-10.2

于 2012-04-12T20:08:51.837 回答