2009-07-02 81 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,直到缺少的部分被加載,但它將開始在後臺獲取腳本文件和樣式表。