瀏覽器傳送請求,拿到html資源,並開始解析。
解析過程中,遇到link標籤,瀏覽器發出對css檔案的請求,。
瀏覽器完成解析html頁面。
這是常規的瀏覽器載入、解析資源流程。
在頁面渲染過程中,如果遇到其他外部資源,如,是不阻塞渲染的,當伺服器返回資源時,瀏覽器再回過頭來重新渲染這部分**。
瀏覽器解析過程是邊解析html生成區域性dom樹,邊生成部分render樹並展示出來,這麼做是為了讓使用者能更快的看到頁面,而不是一進來先出現一會兒白屏現象。
載入js檔案阻塞頁面解析的原因是為了防止js修改了dom樹,引起dom樹不穩定,需要重新渲染的情況(如document.write
)。如果js**有對頁面進行修改,如隱藏某個元素,則瀏覽器會重新渲染這部分**。
css會阻塞js的執行(內嵌css不會)。以防js計算用到了css樣式,而css此時不存在導致的錯誤(如var width = $('#id').width()
)(在執行css解析時,文件會暫停解析文件,firefox 在樣式表載入和解析的過程中,會禁止所有指令碼。而對於 webkit 而言,僅當指令碼嘗試訪問的樣式屬性可能受尚未載入的樣式表影響時,它才會禁止該指令碼。)(瀏覽器會根據link和script標籤的順序解析,如果script在前,link在後,則在js中計算樣式會拿到未被css解析過的樣式值。)
js的執行依賴載入順序,如果出現同名函式,後面會覆蓋前面。
盡量將css檔案寫在中,將js檔案寫在
之前。
呈現引擎基本流程。 解析html構建dom樹-> 渲染樹構建 -> 布局渲染樹 -> 繪製渲染樹
詳情關注部落格
瀏覽器載入和渲染分析
瀏覽器載入和渲染分析 原文 最近一直在做前端js開發,為了更清楚的顯示頁面元素的載入順序,動手寫了乙個程式,程式對頁面中的每個元素都延遲5秒。在ie6下檢視loader.jsp這個頁面,使用httpwatch來檢測頁面元素的載入。從下面的圖中可以看到載入順序。ie6首先載入了頁面loader.jsp...
瀏覽器載入和渲染分析
瀏覽器載入和渲染分析 最近一直在做前端js開發,為了更清楚的顯示頁面元素的載入順序,動手寫了乙個程式,程式對頁面中的每個元素都延遲5秒。在ie6下檢視loader.jsp這個頁面,使用httpwatch來檢測頁面元素的載入。從下面的圖中可以看到載入順序。ie6首先載入了頁面loader.jsp,fi...
瀏覽器併發資源
羅列一下瀏覽器這麼決定可能有什麼考慮 由於 tcp 協議的限制,pc 端只有65536個埠可用以向外部發出連線,而作業系統對半開連線數也有限制以保護作業系統的 tcp ip 協議棧資源不被迅速耗盡,因此瀏覽器不好發出太多的 tcp 連線,而是採取用完了之後再重複利用 tcp 連線或者乾脆重新建立 t...