From 870d78b633069d68b9ecd97f5e7e367b39ef9cc3 Mon Sep 17 00:00:00 2001 From: Hoarfroster Date: Fri, 21 Jun 2024 18:00:07 +0800 Subject: [PATCH] zh-CN: update Glossary/Speculative_parsing (#21540) Co-authored-by: Jason Ren <40999116+jasonren0403@users.noreply.github.com> --- .../glossary/speculative_parsing/index.md | 25 ++++++++----------- 1 file changed, 11 insertions(+), 14 deletions(-) diff --git a/files/zh-cn/glossary/speculative_parsing/index.md b/files/zh-cn/glossary/speculative_parsing/index.md index 1f533b04aa4a59..51b8388ac9c195 100644 --- a/files/zh-cn/glossary/speculative_parsing/index.md +++ b/files/zh-cn/glossary/speculative_parsing/index.md @@ -1,27 +1,24 @@ --- -title: 对页面预解析进行优化 +title: 推测解析 slug: Glossary/Speculative_parsing +l10n: + sourceCommit: ada5fa5ef15eadd44b549ecf906423b4a2092f34 --- {{GlossarySidebar}} -在传统的浏览器中,HTML 解析器运行于主线程之中,并且在遇到 `` 标签后会被阻塞,直到脚本从网络中被获取和执行。Firefox 4 和后续的版本支持从主线程中分离的预解析技术。当脚本在获取和执行的过程中,预解析技术能提前解析 HTML 文档。在 Firefox 3.5 和 3.6 中,HTML 解析器能够在文档流中预先加载脚本、层叠样式表和图片。然而,在 Firefox 4 和后续的版本中 HTML 解析器也预先运行 HTML 树构建算法。这一举措的优点是当预解析成功后,就没有必要再重新解析已经扫描过并且成功下载的脚本,层叠样式表和图片;缺点就是当预解析失败之后,有很多工作需要去做。 +传统上,浏览器的 HTML 解析器运行于主线程之中,并且在遇到 `` 标签后会被阻塞,直到脚本从网络中被获取和执行。Firefox 4 和后续的版本支持从主线程中分离的推测解析技术。在下载和执行脚本时,它会提前进行解析。HTML 解析器会对在数据流中提前找到的脚本、样式表和图片启动推测加载,并推测运行 HTML 树构建算法。这样做的好处是,当推测成功时,就无需重新解析已扫描过脚本、样式表和图像的传入文件部分。缺点是,当推测失败时,会损失更多的工作。 -这篇文档旨在帮助你避免预解析失败和页面加载变慢。 +这篇文档旨在帮助你避免推测失败和页面加载变慢。 -## 使预加载成功 - -让脚本、层叠样式表和图片预加载成功的规则只有一条: - -- 如果你使用 `` 元素重载页面的基 URI,将这个元素放置到文档的非脚本部分。不要通过 `document.write()` 或者 `document.createElement()` 添加。 +要想成功加载链接脚本、样式表和图片,请避免 {{domxref('document.write')}}。如果你使用 `` 元素重载页面的基 URI,将这个元素放置到文档的非脚本部分。不要通过 `document.write()` 或者 {{domxref('document.createElement')}} 添加。 ## 避免树构建器的输出丢失 -当 `document.write()` 改变了文档树的状态时,树构建器的预构建过程会失败。例如,当所有被 `document.write()` 插入的内容被解析之后 `` 标签后的预处理状态不再持有。然而,只有不寻常地使用 `document.write()` 才会产生问题。这些事情需要避免: +当 `document.write()` 改变了文档树的状态,以至于当 `document.write()` 插入的所有内容都被解析后,`` 标记后的推测状态不再保持时,推测树生成失败。然而,只有不寻常地使用 `document.write()` 才会产生问题。这些事情需要避免: - 不要写不对称的文档树。`` 很糟糕。`` 则是可行的。 -- 不要写未完成的标识。 `` 很糟糕。 -- 不要以回车结束内容。 `` 很糟糕。 `` 则是可行的。 -- 注意即使对称的标签也可能导致文档的不对称。比如:`head` 元素中的`` i 会被解析成 `` 因次文档是不对称的。 -- 不要仅格式化部分表格。 `
` 很糟糕。然而, `` 则是可行的。 -- TODO: 在其他格式化元素中使用 document.write。 +- 不要写未完成的标识。`` 很糟糕。 +- 不要以回车结束内容。`` 很糟糕。`` 则是可行的。 +- 需要注意的是,对称的标签也可能导致文档的不对称。比如:`head` 元素中的 `` 会被解析成 ``,因此文档是不对称的。 +- 不要仅格式化部分表格。`
` 很糟糕。