2009-07-02 82 views
11

我读过Firefox 3.5在其parser中有一项新功能?什么是推测分析?

改进了Gecko排版引擎 ,包括更快的内容呈现投机解析 。

您能否简单地解释一下。

回答

24

这一切都与此有关条目的Bugzilla:https://bugzilla.mozilla.org/show_bug.cgi?id=364315

在该条目,安德斯Holbøll建议:

似乎遇到脚本标签时,引用外部文件, 浏览器不会尝试在脚本标记之后加载任何元素,直到加载外部脚本文件的 。这使得引用几个 或大型JavaScript文件的网站速度很慢。
...
这里file1.js将首先加载,然后依次加载file2.js。然后 img1.gif,img2.gif和file3.js将同时加载。当file3.js完全加载 时,img3.gif将被加载。

可能有人会说,因为JS-的文件可能包含例如像 一条线“document.write('<!--');”,没有办法知道如果有以下的脚本标签内容 的将永远是表演的方式,脚本之前已执行。

但我会认为内容显示为 的可能性要大得多。在这些日子里,页面引用许多外部JavaScript文件(ajax-libraries,statistics和advertising)是很常见的,其中 与当前行为会导致页面加载被序列化。

基本上,html解析器继续通过html文件读取并加载引用的链接,即使它由于脚本而被阻止呈现。

它被称为“推测”,因为脚本可能会做一些事情,比如设置像“display: none”这样的css参数,或者注释掉下面的html部分,这样做使得certian的加载不必要......但是,在95%用例中,大多数引用都会被加载,所以解析器通常会正确猜测。

+0

嗯,我不知道是什么让这个问题突然间得到如此重视...... – Stobor 2012-02-19 21:50:18

3

我认为这意味着当浏览器通常会阻塞(例如脚本标记)时,它将继续解析HTML。它将不会创建实际的DOM,直到缺少的部分被加载,但它将开始在后台获取脚本文件和样式表。