什么是推测性解析?

时间:2009-07-02 06:20:18

标签: firefox parsing

我读过Firefox 3.5在parser中有一个新功能?

  

Gecko布局的改进   引擎,包括推测解析   用于更快的内容呈现。

你能用简单的语言解释一下吗。

2 个答案:

答案 0 :(得分:25)

这与bugzilla中的这个条目有关:https://bugzilla.mozilla.org/show_bug.cgi?id=364315

在该条目中,AndersHolbøll建议:

  

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

     

有人可能会争辩说,因为js文件可能包含例如一行   “document.write('<!--');”,无法知道是否有任何内容   在脚本执行之前,将会显示脚本标记。

     

但我认为内容更有可能被展示出来   不是。在这些日子里,页面引用很多很常见   外部javascript文件(ajax-libraries,统计和广告),其中   使用当前行为会导致页面加载序列化。

基本上,html解析器继续读取html文件并加载引用的链接,即使它因脚本而被阻止渲染。

它被称为“推测”,因为脚本可能会执行诸如设置“display: none”之类的css参数或者注释掉以下html的各个部分之类的操作,并且这样做会使certian加载变得不必要......但是,在95%的用例中,大多数引用都会被加载,因此解析器通常会正确猜测。

答案 1 :(得分:3)

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